Discuss / Java / 大家帮我看一下。我的代码有问题么?为什么我编译完成后执行报错:错误: 找不到或无法加载主类 Xxx 原因: java.lang.NoClassDefFoundError: com/itranswarp

大家帮我看一下。我的代码有问题么?为什么我编译完成后执行报错:错误: 找不到或无法加载主类 Xxx 原因: java.lang.NoClassDefFoundError: com/itranswarp

Topic source

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);

}

}

[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

廖雪峰

#3 Created at ... [Delete] [Delete and Lock User]

建议你直接在IDE里面运行,直到学到 

classpath和jar

就可以自己在命令行跑了

好的,谢谢廖老师!

之前代码确实存在问题,下边修改后的作业代码。。将遇到的问题和思路和大家分享一下;

根据廖老师所说,在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); // 按照百分比输出成绩提升比例

}

}

scanner.nextInt()这是获取整数

scanner.nextFloat(); // 获取浮点数;或者使用 scanner.nextDouble(); 

  • 1

Reply