所以我看了几个相关的问题,但似乎仍然找不到我的答案(我想是因为它很具体)。我正在尝试在Java中使用Scanner.useDelimiter方法,但无法使其正常工作...这是我的两难选择...

我们应该编写一个程序,该程序采用X,Y坐标并计算两点之间的距离。显然,一种解决方案是分别扫描每个x和y坐标,但这对我来说很草率。我的计划是要求用户将坐标输入为“ x,y”,然后使用Scanner.nextInt()方法获取整数。但是,我必须找到一种忽略“,”的方法,当然,可以使用useDelimiter方法来做到这一点。

根据其他主题,我必须了解正则表达式(尚不存在)才能放入useDelimiter方法,但要忽略逗号,但是,用户可能输入负数作为坐标(在技​​术上是正确的)。如何获取useDelimiter以忽略逗号,但仍能识别负号?

这是我第一次来,这里是我的代码:

import java.util.Scanner;
import java.text.DecimalFormat;

public class PointDistanceXY
{
 public static void main(String[] args)
 {
  int xCoordinate1, yCoordinate1, xCoordinate2, yCoordinate2;
  double distance;

  // Creation of the scanner and decimal format objects
  Scanner myScan = new Scanner(System.in);
  DecimalFormat decimal = new DecimalFormat ("0.##");
  myScan.useDelimiter("\\s*,?\\s*");

  System.out.println("This application will find the distance between two points you specify.");
  System.out.println();

  System.out.print("Enter your first coordinate (format is \"x, y\"): ");
  xCoordinate1 = myScan.nextInt();
  yCoordinate1 = myScan.nextInt();

  System.out.print("Enter your second coordinate (format is \"x, y\"): ");
  xCoordinate2 = myScan.nextInt();
  yCoordinate2 = myScan.nextInt();
  System.out.println();

  // Formula to calculate the distance between two points
  distance = Math.sqrt(Math.pow((xCoordinate2 - xCoordinate1), 2) + Math.pow((yCoordinate2 - yCoordinate1), 2));

  // Output of data
  System.out.println("The distance between the two points specified is: " + decimal.format(distance));
  System.out.println();
 }
}


感谢您的帮助,我期待着帮助其他人!

最佳答案

我认为单独要求x和y会更容易(对于程序的命令行类型更常规)

例:

Scanner myScan = new Scanner(System.in);
System.out.print("Enter your first x coordinate: ");
xCoordinate1 = Integer.parseInt(myScan.nextLine());
yCoordinate1 = Integer.parseInt(myScan.nextLine());


但是,如果您坚持同时使用分号和分号,则可以尝试使用返回线代替“,”作为分号,因为您必须对它进行两次定界,记住一次,在x之后,然后在y之后。但这使您回到相同的结果。问题是,如果您要使用定长计并同时放入它,则需要将其定界两次。我建议改为查看字符串的.split函数。

另一种方法是使用.split(“,”);函数,其中“,”是您的分隔符。
例:

  Scanner myScan = new Scanner(System.in);
  System.out.print("Enter your first coordinate (format is \"x, y\"): ");
  String input = myScan.nextLine();
  xCoordinate1 = Integer.parseInt(input.split(", ")[0]);
  yCoordinate1 = Integer.parseInt(input.split(", ")[1]);


希望这会有所帮助,享受。

10-07 20:34