在一行中输入所有值仍然可以通过构造函数参数读取?

时间:2013-10-09 08:26:39

标签: java methods split

这是我的代码的开头,我希望用户能够在同一行输入数字,然后分别转移到变量xyz 。相反,我现在按Enter键后逐行读取。

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);
} 

6 个答案:

答案 0 :(得分:2)

来自Java Scanner doc:

  

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

另外

  

public int nextInt()

     

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

     

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

     

public int nextInt(int radix)

     

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

     

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

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

3 4 5<press Enter>

答案 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”。

答案 2 :(得分:1)

在String var中输入

之间的空格

然后

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

现在可以根据需要使用整数

答案 3 :(得分: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();

答案 4 :(得分:0)

您可以使用分隔符输入输入数据,使输入为整个字符串,看起来像3;7;11

您需要告知用户特定的输入格式,并最终正确解析输入,如: System.out.println("Enter the sides of the triangle in format x;y;z "); String[]inputData = userInput.nextString().split(";");

答案 5 :(得分: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+"]");