Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不断获取错误消息";“线程中的异常”;“主要”;java.util.NoSuchElementException“;_Java - Fatal编程技术网

不断获取错误消息";“线程中的异常”;“主要”;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();
}