0

これは私のコードの始まりです。ユーザーが同じ行に数字を入力してから変数に転送できるようにしたいx,yzそれぞれ. 代わりに、現在、Enter キーを押した後、1 行ずつ読み取られています。

public static void main (String[]args)
{
    Scanner userInput = new Scanner(System.in);
    int x = 0;
    int y = 1;
    int z = 2;
    System.out.println("Enter the sides of the triangle: ");
    x = userInput.nextInt();
    y = userInput.nextInt();
    z = userInput.nextInt();
    Triangle isos = new Triangle(x,y,z);
    Triangle equal = new Triangle(x,y,z);
    Triangle scalene = new Triangle(x,y,z);
} 
4

6 に答える 6

2

Java スキャナーのドキュメントから:

スキャナーが使用するデフォルトの空白区切り文字は、Character.isWhitespace によって認識されます。

また

public int nextInt()

入力の次のトークンを int としてスキャンします。

nextInt() 形式のこのメソッドの呼び出しは、呼び出し nextInt(radix) とまったく同じように動作します。基数は、このスキャナーのデフォルトの基数です。

public int nextInt(整数基数)

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

次のトークンが上で定義した整数正規表現に一致する場合、トークンは int 値に変換され、ロケール固有のプレフィックス、グループ セパレータ、およびロケール固有のサフィックスがすべて削除され、Character.digit を介して非 ASCII 数字が ASCII 数字にマッピングされます。 、ロケール固有の負の接頭辞と接尾辞が存在する場合は負号 (-) を先頭に追加し、結果の文字列を指定された基数で Integer.parseInt に渡します。

あなたの問題はすでに解決されているので、正しい入力を使用してください:

3 4 5<press Enter>
于 2013-10-09T08:34:23.437 に答える
1

それを行う1つの方法は、次を使用することですScanner#useDelimeter

Scanner scanner = new Scanner(System.in); 
scanner.useDelimeter(" ");    //Or "\\s+" for more than space
for(int i = 0; i < SOME_LENGTH; i++) 
    myNumbers[i] = scanner.nextInt(); 
} 

編集:

@ ppeterka66 (+1) の回答を表示した後、以下を参照してくださいScanner

スキャナーが使用するデフォルトの空白区切り文字は、Character.isWhitespace によって認識されます。

つまり、スペースで区切ってシーケンスを記述し、「Enter」を押すだけです。

于 2013-10-09T08:31:05.297 に答える
1

間にスペースを入れて String var で入力を取得します

それから

String[] tempArr = inputString.split(" ");
ArrayList<Integer> intArr = new ArrayList<Integer>():
for(String s:tempArr)
{
intArr.add(Integer.parseInt(s));
}

これで、必要に応じて整数を使用できます

于 2013-10-09T08:31:09.387 に答える
0

入力が文字列全体で次のようになるように、区切り記号を使用して入力データを入力できます。3;7;11

特定の入力形式についてユーザーに通知し、最終的に次のように入力を正しく解析する必要があります。 System.out.println("Enter the sides of the triangle in format x;y;z "); String[]inputData = userInput.nextString().split(";");

于 2013-10-09T08:34:46.360 に答える
0
Scanner userInput = new Scanner(System.in);
    int x,y,z;
    System.out.print("Enter x: ");
    x = userInput.nextInt();
    System.out.print("Enter y: ");
    y = userInput.nextInt();
    System.out.print("Enter z: ");
    z = userInput.nextInt();
于 2013-10-09T08:33:28.597 に答える