0
import java.util.Scanner;
public class Question3 {
public static void main(String[] args) {
    String input;
    int i1,i2,i3;
    Scanner keyboard = new Scanner(System.in);
    System.out.println("Input a 3 digit number ");
    input = keyboard.next();
    String[] numbers = input.split("\\s+");
    i1= Integer.parseInt(numbers[0]);
    i2= Integer.parseInt(numbers[1]);
    i3= Integer.parseInt(numbers[2]);
    System.out.println(i1);
    System.out.println(i2);
    System.out.println(i3);
    
    }   
}

誰かが 1 2 3 と入力すると、プログラムは出力するはずです。

1

2

3 ただし、行 i2= .... で arrayindexoutofbounds execpetion をスローします。

ところで、後でそれらを処理する必要があるため、それらをINTにする必要があります...どうすればこれを修正できますか? (私のクラスの質問は...)

Scanner を使用して 3 つの整数 (正の数) を読み取るプログラムを作成し、3 のうち最大の数を表示します。(演算子 && または || のいずれも使用せずに完了してください。これらの演算子については、すぐにクラスで説明します。同様に、ループは必要ありません。)

いくつかのサンプル実行:

3 つの整数を入力してください: 5 8 3

最大 3 つ: 8

4

4 に答える 4

2

input = keyboard.next();試す 代わりに input = keyboard.nextLine();

ドキュメントによるとScanner、デフォルトの区切り文字は空白です-

Scanner は、デフォルトで空白に一致する区切り文字パターンを使用して、入力をトークンに分割します。

そして方法next()-

このスキャナーから次の完全なトークンを検索して返します。完全なトークンの前後には、区切り文字パターンに一致する入力が続きます。

したがって、この場合keyboard.next()、最初の数値のみを文字列として返します。

于 2012-10-02T02:22:36.707 に答える
2
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
    int i1,i2,i3;
    Scanner keyboard = new Scanner(System.in);
    System.out.println("Input a 3 digit number ");

    i1= Integer.parseInt(keyboard.next());
    i2= Integer.parseInt(keyboard.next());
    i3= Integer.parseInt(keyboard.next());
    System.out.println(i1);
    System.out.println(i2);
    System.out.println(i3);

    }   
}
于 2012-10-02T02:30:00.307 に答える
0
import java.util.Scanner;

class Question3 {
    public static void main(String[] args) {

        String input;
        int i1,i2,i3;
        Scanner keyboard = new Scanner(System.in);
        System.out.println("Input a 3 digit number ");
        input = keyboard.next();
        int i=0;
        for (String result: input.split("\\s+")){
             System.out.println(result.charAt(i++));
             System.out.println(result.charAt(i++));
             System.out.println(result.charAt(i++));
        }

    }   
}

元のコードには次のエラーが含まれています:numbers[0]スペースのない String のすべての要素が含まれているため、 にアクセスしようとするとエラーがスローされますnumbers[1]。このコードでは、forループが 1 回だけ実行され、スペースのない文字列が文字列の参照結果に格納されるため、数字を使用して表示するresult.charAt()と正しい結果が得られます。

于 2014-04-28T09:05:23.640 に答える
-1

keyboard.nextInt()int 値を読み取るために使用します。3 つの値を読み取る必要がある場合は、3 回使用します。

ドキュメント リンク:

入力の次のトークンを int としてスキャンします。以下で説明するように、次のトークンを有効な int 値に変換できない場合、このメソッドは InputMismatchException をスローします。変換が成功すると、スキャナは一致した入力を超えて進みます。

次のデータが整数になるかどうかわからない場合は、Scanner#hasNextIntメソッドを使用できます。

于 2012-10-02T02:21:59.823 に答える