gpt4 book ai didi

java - .useDelimiter 解析逗号但不解析负号

转载 作者:行者123 更新时间:2023-12-01 16:01:00 26 4
gpt4 key购买 nike

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

希望这对您有所帮助,祝您愉快。

关于java - .useDelimiter 解析逗号但不解析负号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3930095/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com