Java StringTokenizer异常

Java StringTokenizer异常,java,exception,stringtokenizer,Java,Exception,Stringtokenizer,我的编码没有错误,但我不明白为什么在运行时会出现错误。 以下是完全例外的情况:- java.util.NoSuchElementException Initializing population... at java.util.StringTokenizer.nextToken(Unknown Source) at Input.takeinput(Input.java:44) at schedule.main(schedule.java:33) Exception in thr

我的编码没有错误,但我不明白为什么在运行时会出现错误。 以下是完全例外的情况:-

java.util.NoSuchElementException
Initializing population...
   at java.util.StringTokenizer.nextToken(Unknown Source)
   at Input.takeinput(Input.java:44)
   at schedule.main(schedule.java:33)
Exception in thread "main" java.lang.IllegalArgumentException: bound must be positive
   at java.util.Random.nextInt(Unknown Source)
   at schedule.createpopulation(schedule.java:244)
   at schedule.main(schedule.java:37)
例外情况究竟发生在哪里

对于第一个错误,这里是编码(Input.java:44)

及(附表.java:33)

对于第二个错误。(schedule.java:44)

和(schedule.java:37)


第一个异常表示您调用的
nextToken
超出了需要。正在标记的字符串上没有“下一个标记”。例如,对于字符串
a;Bc
,您只能调用
nextToken
三次,第四次调用将抛出一个与您遇到的异常类似的异常:
NoSuchElementException

第二个异常意味着您的
noexm
变量是一个负整数,这是不好的。尝试调试并找出
noexm
的值,并找出其为负值的原因。

添加一些代码并解释您试图实现的目标。如果您发布代码,请在第30行加上可能的重复项,因为您执行了一些
Random\nextInt(负数)
,如消息所述,为什么要使用StringTokenizer?。可能有更好的方法来实现您的目标:)
File file = new File("input.txt");
        Scanner scanner = new Scanner(file);
        while(scanner.hasNextLine()){
            String line = scanner.nextLine();
            //StringTokenizer st = new StringTokenizer(line, ";");
            //input student and sv
            if(line.equals("student")){
                nostud = 0;
                while(!(line=scanner.nextLine()).equals("examiner")){
                    StudData[nostud] = new Student();
                    StringTokenizer st = new StringTokenizer(line, ";");
                    StudData[nostud].setName(st.nextToken());
                    StudData[nostud].setCode(st.nextToken());
                    StudData[nostud].setSvName(st.nextToken());
                    StudData[nostud].setSvCode(st.nextToken());
                    nostud++;
                }
            }
input.takeinput();
while(!flag){
    int ex = r.nextInt(noexm);
createpopulation();