我是编程新手,所以只要考虑我的错误。我正在编写一个程序,用户在一行中用空格分隔两个输入数字。我必须将第一个输入分配给一个整数变量,然后将第二个输入分配给一个double,并且必须执行一些数学并显示结果。以下是我的代码:
import java.util.Scanner;
public class foo{
public static void main(String[] args){
String b = null;
Scanner sc = new Scanner(System.in);
b = sc.next();
String[] split = b.split(" ");
int i = Integer.parseInt(split[0]);
double d = Double.parseDouble(split[1]);
System.out.println(i+20);
System.out.println(d-1.50);
}
}
以下是我在运行时遇到的错误。
F:\java\work\codechef>javac foo.java
F:\java\work\codechef>java foo
20 300.50
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at foo.main(foo.java:9)
首先我尝试用b=sc.readLine();
制作它,但在编译时出现以下错误:
error: cannot find symbol
b = sc.readLine();
^
symbol: method readLine()
location: variable sc of type Scanner
1 error
为什么我会收到这些错误以及如何解决上述问题。
答案 0 :(得分:1)
您使用sc.next()
返回下一个标记(标记是在之前和/或之后具有分隔符的标记),因此它只包含您的20
或300.50
。< / p>
您应该稍后使用sc.nextLine()
来使用split
,这将返回整行。
或使用:
int i = Integer.parseInt(sc.next());
double d = Double.parseDouble(sc.next());
摆脱界限:
b = sc.next();
String[] split = b.split(" ");