大神解答下:Exception in thread "main" java.lang.Error: Unresolved compilation problem:
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;
}
}
}
}