我正在尝试使用Scanner
从用户输入中捕获整数。这些整数表示坐标和0到1000之间的半径。它是2D平面上的圆。
我 要做的是以某种方式将这些整数与一行分开捕获。因此,例如,用户输入
5 100 20
因此,x坐标为5,y坐标为100,半径为20。
用户必须在同一行上输入所有这些值,我必须以某种方式将程序中的值捕获到三个不同的变量中。
所以,我尝试使用它:
Scanner input = new Scanner(System.in);
String coordAndRadius = input.nextLine();
int x = coordAndRadius.charAt(0); // x-coordinate of ship
int y = coordAndRadius.charAt(2); // y-coordinate of ship
int r = coordAndRadius.charAt(4); // radius of ship
表示一位数的字符,作为测试。结果没那么好。
有什么建议吗?
答案 0 :(得分:3)
使用coordAndRadius.split(" ");
创建一个字符串数组,并从每个数组元素中提取值。
答案 1 :(得分:3)
您必须将输入拆分为3个不同的字符串变量,每个变量都可以单独解析。使用split
method返回一个数组,每个元素都包含一段输入。
String[] fields = coordAndRadius.split(" "); // Split by space
然后,您可以使用Integer.parseInt
int
int x = Integer.parseInt(fields[0]);
// likewise for y and r
在访问之前,请确保阵列中有3个元素。
答案 2 :(得分:3)
最简单的方法(不是最好的方法)就是使用String方法将它们分成数组:
public static void filesInFolder(String filename) {
Scanner input = new Scanner(System.in);
String coordAndRadius = input.nextLine();
String[] array = coordAndRadius.split(" ");
int x = Integer.valueOf(array[0]);
int y = Integer.valueOf(array[1]);
int r = Integer.valueOf(array[2]);
}
您还可以使用nextInt方法,如下所示:
public static void filesInFolder(String filename) {
Scanner input = new Scanner(System.in);
int[] data = new int[3];
for (int i = 0; i < data.length; i++) {
data[i] = input.nextInt();
}
}
您的输入将存储在数组data
答案 3 :(得分:2)
试试这个:
Scanner scanner = new Scanner(System.in);
System.out.println("Provide x, y and radius,");
int x = scanner.nextInt();
int y = scanner.nextInt();
int radius = scanner.nextInt();
System.out.println("Your x:"+x+" y: "+y+" radius:"+radius);
它可以输入“10 20 24”或“10 \ n20 \ n24”,其中\ n当然是换行符。
如果你想知道为什么你的方法不起作用,这就是解释。
int x = coordAndRadius.charAt(0);
charAt(0)返回字符串的第一个字符,然后隐式地转换为int。假设你的coordAndRadius =“10 20 24”。所以在这种情况下,第一个char是'1'。所以上面的陈述可以写成: int x =(int)'1';
答案 4 :(得分:1)
按空格分割值
String[] values = coordAndRadius.split(" ");
然后使用Integer.parseInt
:
int x = Integer.parseInt(values[0]);
int y = Integer.parseInt(values[1]);
int radious = Integer.parseInt(values[2]);