0

这是我的代码的开头,我希望用户能够在同一行输入数字,然后分别转移到xvariablesyz。相反,我目前在按回车后逐行读取它。

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 Scanner 文档:

扫描仪使用的默认空白分隔符由 Character.isWhitespace 识别。

公共 int nextInt()

将输入的下一个标记扫描为 int。

调用 nextInt() 形式的此方法的行为方式与调用 nextInt(radix) 完全相同,其中 radix 是此扫描仪的默认基数。

public int nextInt(int radix)

将输入的下一个标记扫描为 int。如果下一个标记无法转换为有效的 int 值,则此方法将抛出 InputMismatchException,如下所述。如果翻译成功,扫描仪会超过匹配的输入。

如果下一个标记与上面定义的整数正则表达式匹配,则将标记转换为 int 值,就像通过删除所有区域设置特定前缀、组分隔符和区域设置特定后缀,然后通过 Character.digit 将非 ASCII 数字映射到 ASCII 数字, 如果存在特定于语言环境的负前缀和后缀,则在前面加上负号 (-),并将结果字符串传递给具有指定基数的 Integer.parseInt。

所以你的问题已经解决了,只需使用正确的输入:

3 4 5<press Enter>
于 2013-10-09T08:34:23.437 回答
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;
int y;
int z;
System.out.println("Enter the sides of the triangle");
System.out.println("Enter X");
x = userInput.nextInt();
System.out.println("Enter Y");
y = userInput.nextInt();
System.out.println("Enter Z");
z = userInput.nextInt();
System.out.println("The inputs are [x,y,z]=["+x+","+y+","+z+"]");
于 2013-10-09T08:36:17.057 回答
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 回答