Java 无接触异常是什么意思?如何解决?
我们得到了一个满是名字的.txt文件,并被要求按姓氏的字母顺序排列这些名字(如果我们也能按名字排序的话,这是额外的)。我们的任务是创建三个不同的文件:Person、SortName和SortNameApp 我们必须使用Java 无接触异常是什么意思?如何解决?,java,sorting,exception,alphabetical,nosuchelementexception,Java,Sorting,Exception,Alphabetical,Nosuchelementexception,我们得到了一个满是名字的.txt文件,并被要求按姓氏的字母顺序排列这些名字(如果我们也能按名字排序的话,这是额外的)。我们的任务是创建三个不同的文件:Person、SortName和SortNameApp 我们必须使用 Scanner input=new Scanner(new File(args[0])); 查找文件而不是使用BufferedReader 到目前为止,我已经完成了每项工作 人: class Person { String firstName; String lastNam
Scanner input=new Scanner(new File(args[0]));
查找文件而不是使用BufferedReader
到目前为止,我已经完成了每项工作
人:
class Person {
String firstName;
String lastName;
}
索特纳姆斯:
class SortNames {
void sortNames(Person[] arr, int type) {
if (type == 1) {
int j;
boolean flag = true; // will determine when the sort is finished
Person temp;
while (flag) {
flag = false;
for (j = 0; j < arr.length - 1; j++) {
if (arr[j].lastName
.compareToIgnoreCase(arr[j + 1].lastName) > 0) { // ascending
// sort
temp = arr[j];
arr[j] = arr[j + 1]; // swapping
arr[j + 1] = temp;
flag = true;
}
}
}
for (int k = 0; k < arr.length; k++)
System.out.println(arr[k].firstName +"<-->"+arr[k].lastName);
} else if (type == 2) {
int j;
boolean flag = true; // will determine when the sort is finished
Person temp;
while (flag) {
flag = false;
for (j = 0; j < arr.length - 1; j++) {
if (arr[j].firstName
.compareToIgnoreCase(arr[j + 1].firstName) > 0) { // ascending
// sort
temp = arr[j];
arr[j] = arr[j + 1]; // swapping
arr[j + 1] = temp;
flag = true;
}
}
}
for (int k = 0; k < arr.length; k++)
System.out.println(arr[k].firstName +"<-->"+arr[k].lastName);
}
}
}
如您所见,这里的这一行按原样打印文本文件
System.out.println(arr[i].firstName +" "+arr[i].lastName);
但是当涉及到将排序算法应用到代码中时,我只剩下这个
Exception in thread "main" java.util.NoSuchElementException: No line found
at java.util.Scanner.nextLine(Unknown Source)
at SortNameApp.main(SortNameApp.java:16)
我的问题是,这到底意味着什么?有什么可能的解决方法?如果这是一个基本知识的问题,我真的很抱歉,但我对java还是新手,所以所有这些对我来说都是陌生的你试图使用
扫描仪
,就像它是缓冲阅读器一样,但是扫描仪
不仅仅是缓冲阅读器
的替代品
而不是BufferedReader
-样式的代码:
while (line = input.nextLine()) != null) {
...
您需要这样做:
while (input.hasNextLine()){
line = input.nextLine();
...
args[0]
的值是多少(即它是否是应用程序目录中存在的文件名)?您需要检查input.hasNextLine()
。哪一行是第16行?大多数代码和标记与问题无关。顺便说一句。下次尝试发布一个。另请参阅:“。此外。。。我认为不能返回null
。
while (input.hasNextLine()){
line = input.nextLine();
...