大家帮我看一下。我的代码有问题么?为什么我编译完成后执行报错:错误: 找不到或无法加载主类 Xxx 原因: java.lang.NoClassDefFoundError: com/itranswarp
Topic source[E:\JAVA\javaspace\flow-input-output\src\com\itranswarp\learnjava]$ java Xxx
错误: 找不到或无法加载主类 Xxx
原因: java.lang.NoClassDefFoundError: com/itranswarp/learnjava/Xxx (wrong name: Xxx)
[E:\JAVA\javaspace\flow-input-output\src\com\itranswarp\learnjava]$ java Xxx.class
错误: 找不到或无法加载主类 Xxx.class
原因: java.lang.ClassNotFoundException: Xxx.class
之前代码确实存在问题,下边修改后的作业代码。。将遇到的问题和思路和大家分享一下;
根据廖老师所说,在IDE里直接运行,输入数字后发现,得到的结果一直是0.00%;
1、排查计算公式
因为对运算的顺序不熟悉,第一个想到的就是这个,排查后发现公式确实有错误,
原:percent = (prev - score) / m;
修改后:percent = (score - prev) / m;
但是,再次运算后发现依然得不到想要的结果。
2、突然想到,之前廖老师之前讲到的浮点数运算会有误差,将输入的数字模式由原来的int改为double。
可以得到结果了。。。
但是又出现一个问题。。。既然我改为了double。。我能不能输入小数,,,然后我发现输入小数就报错。。。大家能帮我解答一下,这是为什么吗?
package com.itranswarp.learnjava;
import java.util.Scanner;
public class Xxx {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Total score:");
double m = scanner.nextInt(); // 输入试卷总分
System.out.print("Last test result:");
double prev = scanner.nextInt(); // 输入上次考试成绩
System.out.print("Results of this exam:");
double score = scanner.nextInt(); // 输入本次考试成绩
double percent = (score - prev) / m;
System.out.println(percent); // 输出成绩提升比例
System.out.printf("Improved grades%.2f%%", percent * 100); // 按照百分比输出成绩提升比例
}
}
- 1
陌陌丶小龙_582
package com.itranswarp.learnjava;
import java.util.Scanner;
public class Xxx {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Total score:"); //试卷总分
int m = scanner.nextInt();
System.out.print("Last test result:"); //上次分数
int prev = scanner.nextInt();
System.out.print("Results of this exam:"); //本次分数
int score = scanner.nextInt();
double percent = (prev - score) / m;
System.out.printf("Improved grades%.2f%%", percent);
}
}