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();