测试问题解决时出现Java运行时错误.我在字符串数组上的输入部分做错了吗



在此处输入图像描述非常简单的问题,但在网站上显示运行时错误(初学者btw(。不太确定错误,但我认为输入部分不正确(从输入中获取多个字符串(。有没有其他方法可以在字符串数组上获得输入?如果有的话,请告诉我。

Exception in thread "main" java.util.NoSuchElementException: No line found
at java.base/java.util.Scanner.nextLine(Scanner.java:1651)
at ExcellentResult.main(ExcellentResult.java:14)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at _$SandboxExecutor.main(_$SandboxExecutor.java:38)`package examples0;
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int salary = scanner.nextInt();
String[] tabs = new String[n];
int i;
for(i=0; i<n; i++) tabs[i] = scanner.nextLine();
for(i=0; i<n; i++){
switch (tabs[i]) {
case "Facebook":
salary-=150;
break;
case "Instagram":
salary-=100;
break;
case "Reddit":
salary-=50;
break;
}
}
if(salary>0){
System.out.println(salary);
}
else{
System.out.println("You have lost your salary.");
}
}

代码似乎是正确的,这是我运行它后得到的输出:

3
1000
Facebook
Instagram
750

获取字符串输入的另一种方法是在运行时提供命令行参数,然后通过";args";。你的代码看起来像:

public static void main(String[] args) {

int salary = Integer.parseInt(args[0]);

for(int i=1; i<args.length; i++){
switch (args[i]) {
case "Facebook":
salary-=150;
break;
case "Instagram":
salary-=100;
break;
case "Reddit":
salary-=50;
break;
}
}
if(salary>0){
System.out.println(salary);
}
else{
System.out.println("You have lost your salary.");
}
}

你必须使用你的终端来运行它,比如:

% javac <Name of class>.java
% java <Name of class> 3000 Facebook Instagram Reddit
2700
% java <Name of class> 100 Facebook Instagram Reddit 
You have lost your salary.

我希望这能有所帮助。

最新更新