中易网

一个java问题,运行时就出错了。

答案:6  悬赏:50  
解决时间 2021-01-11 23:16
  • 提问者网友:我的未来我做主
  • 2021-01-11 20:14
一个java问题,运行时就出错了。
最佳答案
  • 二级知识专家网友:渊鱼
  • 2021-01-11 21:17
import java.util.Scanner;
public class NewClass {
public static void main(String args[]) {
NewClass application = new NewClass();
System.out.println("How many students do you want to input?");
Scanner str = new Scanner(System.in);
int n = str.nextInt();
Student[] student = new Student[n];
application.init(student);
application.sort(student);
application.output(student);
}
class Student {
public String number;
public String name;
public int scores;

public Student(String number, String name, int scores) {
this.number = number;
this.name = name;
this.scores = scores;
}
}

public void init(Student[] student) {
System.out.println("Please input " + student.length + " students' number,name and scores");
Scanner string = new Scanner(System.in);
for (int i = 0; i < student.length; i++) {
String number = string.nextLine();
String name = string.nextLine();
int scores = string.nextInt();
Student stu=new Student(number,name,scores);
student[i]=stu;
System.out.println("next one");
string = new Scanner(System.in);
}
}

public void sort(Student[] student) {
Student temp = new Student("3", "enen", 3);
for (int i = 0; i < student.length - 1; i++) {
for (int j = 1; j < student.length; j++) {
if (student[i].scores < student[j].scores) {
temp = student[i];
student[i] = student[j];
student[j] = temp;
}
}
}

}
public void output(Student[] student) {
for (int i = 0; i < student.length; i++) {
System.out.println(student[i].name);
}
}
}追问为什么还是不能运行呢??追答我给你改了,你看看改动的地方啊。
不能运行时因为程序出错了啊。追问能不能帮我改到可以运行。追答这个就是可以运行的啊,我都试过了啊。追问可以运行了,但是运行结果不正确,这个程序是要将名字按照成绩从高到低来排序,但是如果输入随便输入4个student的number,name,scores,则结果并不是按照顺序排的,是不是冒泡法的for循环出错了呢?追答是,第二个循环不对,你搜索下冒泡算法吧。
全部回答
  • 1楼网友:等灯
  • 2021-01-12 01:12
求分的
  • 2楼网友:一把行者刀
  • 2021-01-12 01:00
Student[] student = new Student[n];在这句的时候就出错了,你这个应该是想创建个Student类型的数组吧,这个地方的异常是com.sun.jdi.ClassNotLoadedException: Type has not been loaded occurred while retrieving component type of array.所以在student[i].number这里地方才会出空异常
我想你可以放到一个list里去比较,可能是你这个student的类型不能像int或String那样创建数组。我没这样写过,都是用list的,希望对你有帮助
  • 3楼网友:猎心人
  • 2021-01-12 00:29
你把init方法改成下面这样,试下:
public void init(Student[] student) {
System.out.println("Please input " + student.length + " students' number,name and scores");
Scanner string = new Scanner(System.in);
int i = 0;
while(string.hasNext() && i < student.length){
String[] str = string.nextLine().split(" ");
student[i] = new Student(str[0], str[1], Integer.parseInt(str[2]));
i++;
if(i == student.length){
return;
}
}
}
  • 4楼网友:英雄的欲望
  • 2021-01-11 23:27
额 肯定会报错的。。。Student[] student = new Student[n];这句话只是定义数组,里面并没有东西,你下面却直接使用
  • 5楼网友:人類模型
  • 2021-01-11 21:54
没仔细看 不过你这个是写在一个 .java文件里的话那肯定出错 一个.java文件里只能有一个public的类追问你输入一个数试试看就知道哪里出错了。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息