gpt4 book ai didi

java - 使用带有字符串分割器的扫描仪

转载 作者:行者123 更新时间:2023-12-02 04:26:53 29 4
gpt4 key购买 nike

我正在尝试使用字符串拆分器来显示用户输入,例如1,2 坐标显示在控制台上。当我运行我的代码时,我没有收到任何错误。但是,我尝试使用分离器似乎不起作用。

Scanner scanner = new Scanner(System.in);
System.out.println("Enter a row and column number at which to shoot (e.g., 2,3): ");
String[] coordinates = scanner.nextLine().split(",");
if (coordinates.length != 2) {
System.out.println("Please enter coordinates in the correct format.");
System.out.println("\nPlayer 1 Please take your turn:");
continue;
}

System.out.println("\nEnter Mine location:");

System.out.println("\nPlease Enter x position for your Mine:");
System.in.read(byt);
str = new String(byt);
row = Integer.parseInt(str.trim());

System.out.println("\nPlease Enter y position for your Mine:");
System.in.read(byt);
str = new String(byt);
col = Integer.parseInt(str.trim());

最佳答案

您对System.in.read(...)的使用是危险的代码,并且没有做您认为它正在做的事情:

System.in.read(byt); // *****
str = new String(byt);
row = Integer.parseInt(str.trim());

而是使用扫描仪,您已有的东西,然后调用 getNextInt()在扫描仪上,或者获取该行并解析它。

此外,您从不使用坐标数组中保存的字符串 - 如果您忽略它们,为什么还要获取字符串?

<小时/>

您询问的是:

Scanner scanner = new Scanner(System.in); 
System.out.println("Enter a row and column number at which to shoot (e.g., 2,3): ");
str = scanner.nextInt().split(",");

但随后发现编译器不允许这样做,因为您试图在 scanner.nextInt() 的 int 原语上调用一个方法。返回。

我建议使用Scanner#nextInt()是作为您滥用 System.in.read(...) 的替代品。如果您希望用户在一行上输入两个数字,并用逗号分隔,那么最好的选择是使用 String.split(",") ,不过,我认为使用 String.split("\\s*,\\s*") 可能会更好消除任何空白,例如悬挂的空格。这样分割应该适用于 1,1以及 1, 21 , 2 ,然后您可以通过 Integer.parseInt(...) 解析数组中保存的项目.

关于java - 使用带有字符串分割器的扫描仪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32039691/

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