0
私はプログラミングに慣れていないので、間違いを考慮してください。私は、ユーザが空白で区切られた1行に2つの入力番号を与えるプログラムを書いています。最初の入力を整数変数に代入し、2番目を2倍にして、数学を実行して結果を表示する必要があります。以下の私のコードです:スレッド "main"の例外java.lang.ArrayIndexOutOfBoundsException:1エラー
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
私はどのように上記の問題を解決するために、これらのエラーを取得していますなぜ。
使用 '代わりにsc.next' – Zircon
@Tunaki'のsc.nextLine'これは重複していない、問題ArrayIndexOutOfBoundsExceptionをスローしますが、別です。 –
@krzyk問題は同じです。範囲外だった配列のインデックスにアクセスしようとしました。なぜなら、 'split [1]'が例外をスローする理由、なぜ 'b.split(" ")'が長さ1の配列を返したのか、なぜ 'next()'スペースは1つしかありませんでした。 OPはhttp://stackoverflow.com/questions/22458575/whats-the-difference-between-next-and-nextline-methods-from-scanner-classを参照することもできます。 – Tunaki