java中未知的运行时错误

时间:2014-11-16 10:47:30

标签: java runtime-error infinite-loop

我想创建一个模拟市场寄存器的类,项目要求在用户给出我们需要多少个寄存器后,他必须在下面的表格中给出一个字符串:

for exaple:0 0 0 1 1 1 2 2 2 3 3 5 5 6 6

这意味着有3位顾客进入商店0位,3位顾客在1时进入商店等。

这是我的代码:

import java.util.Scanner;
import java.io.*;


public class QueueSimulation
{
public static void main(String[] args)
{
int a;
int i = 0;

String input;

Scanner s = new Scanner(System.in);

int A[] = new int[10000];

System.out.println("This programs simulates a queue of customers at registers.");


System.out.println("Enter the number of registers you want to simulate:");

a = s.nextInt();
while(a==0 || a <0){
System.out.println("0 registers or no registers is invalid. Enter again: ");

a = s.nextInt();

}
int fifo[] = new int[a];

System.out.println("Enter how many customers enter per second.For example: 0 0 1 1 2 2 2 3 3.       
Enter : ");
  input = s.nextLine();


  while(s.hasNext()){
 while(s.hasNextInt()){
 A[i] = s.nextInt();
 i++;

 }
 s.close(); 
 }


s.close();  
}

}

代码编译很好,但是当我运行它时,2 while循环和程序nevers结束或停止时出现问题。如果你有时间,你会明白并且你会理解。我不知道也许我把close()方法放错了?请帮忙。

1 个答案:

答案 0 :(得分:0)

您在给定代码中缺少s.next();

while(s.hasNext()){
while(s.hasNextInt()){
A[i] = s.nextInt();
i++;
}
// here s.next() is missing...
s.close(); 
}

请在程序的第二次循环结束之前添加s.next();语句,以便正确迭代您的程序......