我开始学习JAVA,我有一个非常简单的任务要做,但我有一个问题
在Eclipse中,它工作正常,但在IDEONE中是错误的:
线程“main”中的异常java.util.NoSuchElementException:找不到行 在java.util.Scanner.nextLine(Scanner.java:1540) 在Main.main(Main.java:9)
有我的代码:
Scanner tek=new Scanner(System.in);
String t2=tek.nextLine();
int t=Integer.parseInt(t2);
int tablica1[]= new int[t];
if(t>=1 && t<=100)
{
for(int i=0; i<t; i++)
{
String ciag=tek.nextLine();
String tablica[]=ciag.split(" ");
int x=Integer.parseInt(tablica[1]);
int y=Integer.parseInt(tablica[2]);
if(tablica[0].equals("+"))
{
tablica1[i]=x+y;
} else if(tablica[0].equals("-"))
{
tablica1[i]=x-y;
} else if(tablica[0].equals("*"))
{
tablica1[i]=x*y;
} else if(tablica[0].equals("/"))
{
tablica1[i]=x/y;
} else if(tablica[0].equals("%"))
{
tablica1[i]=x%y;
}
}
for(int i=0; i<t; i++)
{
System.out.println(tablica1[i]);
}
}
我知道我可以宣布
int t=tek.nextInt();
在开始时但是当我这样做时,我有更多错误; p
你能告诉我,我的代码有什么问题吗?
你能逐步解释一下吗?
我在2个程序中遇到同样的错误;在其他程序中,我在for循环之前声明tek.nextLine();
并且它有效。
答案 0 :(得分:1)
在执行tek.nextLine()
之前,在for循环中,您需要检查Scanner
是否有nextToken
while (tek.hasNext())
检查https://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html
答案 1 :(得分:0)
我建议实际上你的代码实际上不是错误,而是IDEONE。如果它在Eclipse中工作,我没有其他理由可以阻止它在另一个IDE中工作,除非你当然使用不同的Java编译器。
答案 2 :(得分:0)
String ciag=tek.nextLine();
String tablica[]=ciag.split(" ");
int x=Integer.parseInt(tablica[1]);
int y=Integer.parseInt(tablica[2]);
你怎么知道ciag中有3个令牌?你怎么知道输入1和2是整数? (如果用户输入&#34; - 5 x&#34;)
,您将获得例外答案 3 :(得分:0)
您可以尝试使用命令提示符运行此代码吗?看看你得到了什么错误。 IDE不会产生任何错误。