大神解答下:Exception in thread "main" java.lang.Error: Unresolved compilation problem:

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大神解答下:Exception in thread "main" java.lang.Error: Unresolved compilation problem:相关的知识,希望对你有一定的参考价值。

import java.util.Scanner;
public class 逻辑

/**
* @param args
*/
public static void main(String[] args)
Scanner input=new Scanner(System.in);
System.out.print("请输出张浩的java成绩:");
int javaScore=input.nextInt();

System.out.print("请输入张浩的音乐成绩:");
int musicScore=input.nextInt();

if((javaScore>98 && musicScore>80)||(javaScore==100 && musicScore>70))
System.out.println("老师奖励张浩");

java.lang.Error: Unresolved compilation problem: java代码编译错误

原因: 代码没有编写完整. java里 花括号都是成对出现的,

解决办法: 最后加上3个反花括号    

启发: 写代码要按照习惯进行良好的缩进, 这样就能清晰的看出来花括号是否有写全

修改完后的代码

import java.util.Scanner;

public class 逻辑 

/**
 * @param args
 */
public static void main(String[] args) 
Scanner input = new Scanner(System.in);
System.out.print("请输出张浩的java成绩:");
int javaScore = input.nextInt();

System.out.print("请输入张浩的音乐成绩:");
int musicScore = input.nextInt();

if ((javaScore > 98 && musicScore > 80) || (javaScore == 100 && musicScore > 70)) 
System.out.println("老师奖励张浩");


其他建议: 

类名建议不要使用中文.  按照java命令的规范,最好是英文,并且每个单词的首字母大写.并且要有意义的名词.

比如 class Student //学生类

class QueryFrame // 查询窗口类

class MyUtils //我的工具类

所以类名建议从 逻辑 --修改成--> ScoreDemo 之类的

思考

int javaScore = input.nextInt(); 存在2个问题

问题一:

//这句代码.如果输入的是-56 或者 输入的是180 ,虽然不会出错,但是不符合常规.

//因为分数都是 [0~100]之间

问题二:

//这代码,就限制输入只能输入整数,如果是其他类型,比如输入abc 98.26

//那么就会抛出异常 java.util.InputMismatchException 并且导致程序退出

//如果有异常,程序就崩溃,那么这样的程序是不稳健的

完善版本

import java.util.Scanner;

public class ScoreDemo 

public static void main(String[] args) 
Scanner input = new Scanner(System.in);
String name = "张浩";
int javaScore = getScore(name,"java", input);
int musicScore = getScore(name,"音乐", input);
System.out.println("录入成功!! "+name+" java成绩:"+javaScore+"\\t音乐成绩:"+musicScore);
if ((javaScore > 98 && musicScore > 80) || (javaScore == 100 && musicScore > 70)) 
System.out.println("老师奖励"+name);



//该方法 用于从控制台读取一个整数
// name   姓名
// course 课程
// input  扫描器,用于读取输入
private static int getScore(String name,String course, Scanner input) 
int score;
while (true) 
System.out.print("请输出"+name+"的" + course + "成绩:");
try 
score = Integer.parseInt(input.nextLine());// 读取一行字符串转换为整数
if (score < 0 || score > 100)  // 这个判断,主要用于判断该整数是否在合理的范围
System.out.println("Error: 请输入的范围在[0~100]");
continue;// 如果不在合理的范围,就再循环依次,等待输入

return score; // 如果进行到这里 ,那么说明代码没有异常,也在合理范围,也就可以跳出循环了
 catch (Exception e) // 捕获到异常,说明,输入的是字母等.需要再次循环,提示用户输入
// e.printStackTrace();
System.out.println("Error: 请输入一个整数.");
continue;



参考技术A nextInt就已经限制了输入的类型是int整型,报错说你输错了追问

你好,那要怎么修改呢

追答

你输入就只能输入整型数字了

也可以通过throws抛出这个错误

也可以通过try…catch来处理这个错误

我第一句话意思就是只能输整数了

如果你想搞个80.5,就把nextInt换成nextDouble

不好意思,看错了,你没把java包导入

在最开头写import java.util.*;

然后在方法第一行实例Scanner对象

具体写法是:
Scanner input = new Scanner(System.in)

后面在跟个“;”表示结束

追问

你好,有微信?我还是不太懂。想请教下你

我已经按照你输入了

让后还是不可以

求大神指点,小弟刚开始学

追答

看不清图片

微博:http://weibo.com/u/6465766503

以上是关于大神解答下:Exception in thread "main" java.lang.Error: Unresolved compilation problem:的主要内容,如果未能解决你的问题,请参考以下文章

nutch1.2 Exception in thread "main" java.io.IOException: Job failed!

ERROR Utils: Uncaught exception in thread stdout writer for python

Exception in thread “main“ java.lang.NoClassDefFoundError

execjs执行js代码报错:Exception in thread Thread-1

Exception in thread "HSQLDB Connection @429be9" java.lang.OutOfMemoryError: Java heap spac

Exception in thread "Thread-1" java.util.ConcurrentModificationException 异常原因和解决方法