所以我看了几个相关的问题,但似乎仍然找不到我的答案(我想是因为它很具体)。我正在尝试在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]);
希望这会有所帮助,享受。