gpt4 book ai didi

Java:将多个用户输入坐标添加到列表中

转载 作者:行者123 更新时间:2023-11-30 02:35:58 24 4
gpt4 key购买 nike

我正在编写一个 Java 程序来接受用户输入的坐标,例如:

((1 2),(3 4))

并将其放入坐标列表中。因此,例如,如果我输入 ((3 2)) 我会去掉所有括号并在逗号上分割字符串,以便将两个坐标放入 ArrayList 中,如下所示:

[1 2, 3 4]

如果我有一个坐标(即 ((1 2))),我可以去掉所有括号,但是我如何分割字符串并将每个唯一坐标作为它自己的坐标ArrayList 中的条目?

这是迄今为止我的代码:

    public static String getParenthesesContent(String str){
String answer = str.substring(str.indexOf("((")+2,str.indexOf(")"));
return answer;
}

public static void main(String[] args) {

List<String> points = new ArrayList<>();
Scanner in = new Scanner(System.in);
System.out.println("Enter coordinates: ");

String blocks = in.nextLine();
System.out.println(blocks);

String answer = getParenthesesContent(blocks);
System.out.println(answer);

points.add(answer);
}

最佳答案

您应该考虑使用一种更简单、更好的方式来定义输入,以便更好/更快/更轻松地处理该输入(看起来您正在用这种输入格式搬起石头砸自己的脚)

对于这个问题...您可以使用 \\((.+?)\\) 之类的模式定义 REGEX并清理每场比赛,然后将其放入列表中。

public static void main(final String[] args) {

List<String> points = new ArrayList<>();
System.out.println("Enter coordinates: ");

String blocks = "((1 2),(3 4))";
foo(blocks, points);
blocks = "( 1 2)"; //intentionally added space to the input
foo(blocks, points);
blocks = "((1 2),(3 4),(8 7))";
foo(blocks, points);
System.out.println(points);

}

private static void foo(final String blocks, final List<String> points) {
Matcher match = Pattern.compile("\\((.+?)\\)").matcher(blocks);
while (match.find()) {
String x = match.group(1).replace("(", "").trim();

System.out.println(x);
points.add(x);
}
}

关于Java:将多个用户输入坐标添加到列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43061741/

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