.useDelimiter解析逗号而不是负号

时间:2010-10-14 04:29:27

标签: java java.util.scanner

所以我看了几个相关的问题,但似乎仍然无法找到我的答案(我猜因为它是具体的)。我正在尝试在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();
 }
}

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

1 个答案:

答案 0 :(得分:1)

我认为单独询问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]);

希望这有帮助,享受。