不断获取错误消息";“线程中的异常”;“主要”;java.util.NoSuchElementException“;
这是我的密码不断获取错误消息";“线程中的异常”;“主要”;java.util.NoSuchElementException“;,java,Java,这是我的密码 public class NEW { String Firstname; String Lastname; String Position; int Jnum; String Team; public static void main(String[] args) throws Exception { String a = JOptionPane.showInputDialog("Enter in 0 to
public class NEW {
String Firstname;
String Lastname;
String Position;
int Jnum;
String Team;
public static void main(String[] args) throws Exception {
String a = JOptionPane.showInputDialog("Enter in 0 to sort by First Name\nEnter in 1 to sort by Last Name\n" +
"Enter in 2 to sort by position\nEnter in 4 to sort by Team names");
int q = Integer.parseInt(a);
File input = new File("Roster.txt");
Scanner players = new Scanner(input);
NEW [] array = new NEW [435];
int x=0;
while (players.hasNext()){
array[x] = new NEW();
array[x].Firstname = players.next();
array[x].Lastname = players.next();
array[x].Position = players.next();
array[x].Jnum = players.nextInt();
array[x].Team = players.next();
}
JOptionPane.showMessageDialog(null, array.toString()," ", JOptionPane.INFORMATION_MESSAGE);
players.close();
}
public static NEW[] BubbleSort(int num, NEW []array){
int p=0;
if (num==0){
String temp = null;
for(int k =1;k<435;k++){
for(int i=0;i<435-k;i++){
if(array[i].Firstname.compareTo(array[i+1].Firstname)>0){
temp = array[i].Firstname;
array[i].Firstname=array[i+1].Firstname;
array[i+1].Firstname= temp;
}
p++;
}
}
return array;
}
if (num==1){
String temp = null;
for(int k =1;k<435;k++){
for(int i=0;i<435-k;i++){
if(array[i].Lastname.compareTo(array[i+1].Lastname)>0){
temp = array[i].Lastname;
array[i].Lastname=array[i+1].Lastname;
array[i+1].Lastname= temp;
}
p++;
}
}
return array;
}
if (num ==2){
String temp = null;
for(int k =1;k<435;k++){
for(int i=0;i<435-k;i++){
if(array[i].Position.compareTo(array[i+1].Position)>0){
temp = array[i].Position;
array[i].Position=array[i+1].Position;
array[i+1].Position= temp;
}
p++;
}
}
return array;
}
if (num ==3){
int temp = 0;
for(int k =1;k<435;k++){
for(int i=0;i<435-k;i++){
if(array[i].Jnum>(array[i+1].Jnum))
temp = array[i].Jnum;
array[i].Jnum=array[i+1].Jnum;
array[i+1].Jnum= temp;
p++;
}
}
return array;
}
if (num ==4){
String temp = null;
for(int k =1;k<435;k++){
for(int i=0;i<435-k;i++){
if(array[i].Team.compareTo(array[i+1].Team)>0){
temp = array[i].Team;
array[i].Team=array[i+1].Team;
array[i+1].Team= temp;
}
p++;
}
}
return array;
}
else return array;
}
}
公共类新建{
字符串名;
字符串Lastname;
串位置;
int Jnum;
弦乐队;
公共静态void main(字符串[]args)引发异常{
字符串a=JOptionPane.showInputDialog(“在0中输入按名字排序\n在1中输入按姓氏排序\n”+
“输入2按职位排序\n输入4按团队名称排序”);
int q=整数.parseInt(a);
文件输入=新文件(“花名册.txt”);
扫描仪播放器=新扫描仪(输入);
NEW[]数组=NEW-NEW[435];
int x=0;
while(players.hasNext()){
数组[x]=new();
数组[x].Firstname=players.next();
数组[x].Lastname=players.next();
数组[x].Position=players.next();
数组[x].Jnum=players.nextInt();
数组[x].Team=players.next();
}
showMessageDialog(null,array.toString(),“”,JOptionPane.INFORMATION_MESSAGE);
玩家。关闭();
}
公共静态NEW[]BubbleSort(int num,NEW[]数组){
int p=0;
如果(num==0){
字符串temp=null;
对于堆栈跟踪中的(int k=1;k,将有源文件的名称和行号。这将准确地告诉您哪行代码是问题的根源,这最终是您试图访问一个集合中没有的元素。例如:
List<String> l = Collections.emptyList();
String s = l.get(0); //will throw NoSuchElementException
每次在迭代器上调用next()
,指针都会向前移动。如果需要多次访问下一个元素,则需要将其保存在局部变量中,并始终使用hasNext()
检查元素是否可用:
while (itr.hasNext()) {
String s = itr.next();
System.out.println("Length of \"" + s + "\" is: " + s.length()); //access twice
}
除非您使用的是itr.remove()
,否则您可以利用javaforeach循环的,这样就不需要编写上面的大部分样板文件,尽管这在扫描仪的情况下不起作用(这是一个迭代器
-foreach仅适用于Iterable
的实例):
正如oxbow_lakes所提到的,关于这个异常的更多信息会更好
但是这个代码是可疑的:
while (players.hasNext()){
array[x] = new NEW();
array[x].Firstname = players.next();
array[x].Lastname = players.next();
array[x].Position = players.next();
array[x].Jnum = players.nextInt();
array[x].Team = players.next();
}
如果players
在循环顶部可用的令牌少于五个,那么其中一个next
s将失败。这告诉你至少有一个令牌可用。你在这里假设至少有一个表示你拥有所有五个令牌,即(显然)这不是一个有效的假设,因为当没有可用的令牌时,您会得到记录要抛出的确切异常。您已经使用了hasNext()方法,它实际上是一个枚举器()将您的数组更改为列表…这将更容易。。您还使用了next()
将其更改为List newelement=newlinkedlist()
然后其他代码..先生,不是他档案中有超过435的代码..而是少于435的代码
这就是它返回空值的原因
他用next()
把它列成一个列表
至少它将等于您输入的..它不会是435,但它将等于文件的长度
如本链接所述
这是一条评论,不是吗?不是答案。我认为关于堆栈跟踪/行号的建议是“值得的”作为一个答案,我也在做传统的保存然后编辑我的答案的事情。我不再认为它值得投反对票!欢迎来到Stackoverflow!请阅读了解它是如何在这里工作的。这不是一个论坛左右:)如果你赢得50个声誉,那么你就可以在别人的帖子上发表评论。要赢得这50个声誉,你显然必须先发布完整的答案;)
for (String s : someIterable) {
//can use s as many times as you want
}
while (players.hasNext()){
array[x] = new NEW();
array[x].Firstname = players.next();
array[x].Lastname = players.next();
array[x].Position = players.next();
array[x].Jnum = players.nextInt();
array[x].Team = players.next();
}