1

我正在尝试使用从用户输入中捕获整数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

对于一位数字字符,作为测试。结果不太好。

有什么建议么?

4

5 回答 5

3

coordAndRadius.split(" ");使用并从每个数组元素中提取值创建一个字符串数组。

于 2013-10-23T18:22:57.543 回答
3

您必须将输入拆分为 3 个不同的字符串变量,每个变量都可以单独解析。使用该split方法返回一个数组,每个元素都包含一个输入。

String[] fields = coordAndRadius.split(" ");  // Split by space

然后您可以将每个部分解析为intusing Integer.parseInt

int x = Integer.parseInt(fields[0]);
// likewise for y and r

在访问它之前,请确保您的数组中有 3 个元素。

于 2013-10-23T18:23:04.533 回答
3

那么最简单的方法(不是最好的方法)就是使用字符串方法将它们分成数组:

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

于 2013-10-23T18:23:11.007 回答
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”。所以在这种情况下,第一个字符是'1'。所以上面的语句可以写成: int x = (int)'1';

于 2013-10-23T18:29:32.910 回答
1

按空格分割值

String[] values = coordAndRadius.split(" ");

然后使用 int 获取每个值Integer.parseInt

int x = Integer.parseInt(values[0]);
int y = Integer.parseInt(values[1]);
int radious = Integer.parseInt(values[2]);
于 2013-10-23T18:25:58.333 回答