我正在编写一个简单的tic tac toe游戏,需要在轮到他们时接受用户输入。玩家应该简单地提供一组坐标,用于将其令牌(1,1)放置到(3,3)。我应该能够接受输入为“2 1”或“2,1”或“2,1”。所以我需要能够获取他们的String输入并拉出两个数字中的每一个,无论分隔符如何,并使用它们将其标记分配给3x3数组中的指定单元格。
主要的问题是只能使用我们已经教过的东西(这是Java的第一季度)。这是构建Java程序的前七章,包括扫描程序,条件/逻辑,循环和数组。没有模式,匹配器,列表等。
有没有办法只使用String类,扫描程序或数组来实现这个目的?
答案 0 :(得分:0)
只需使用String类,就可以使用String.split()来获取一个字符串数组,然后可以将其解析为整数
public class Example{
public static void main(String []args){
String str = "2 1";
// first split the original string on a comma
String[] str_arr = str.split(",");
// if the length is one then there were no commas in the input, so split again on white space
if (str_arr.length == 1){
str_arr = str.split(" ");
}
int[] int_arr = new int[str_arr.length];
// assign the string array to an int array
for (int i = 0; i < str_arr.length; i++){
int_arr[i] = Integer.parseInt(str_arr[i]);
}
// output to console
for (int j : int_arr){
System.out.println(j);
}
}
}
答案 1 :(得分:0)
忘记添加“”以将char转换为String。
Scanner input = new Scanner(System.in);
String userInput;
String[] coordinates = new String[2];
char character;
int length;
userInput = input.nextLine();
length = userInput.length();
if(length > 2){
coordinates[0] = "" + userInput.charAt(0);
character = userInput.charAt(2);
if(character != ',' && character != ' '){
coordinates[1] = "" + character;
}
else{
coordinates[1] = "" + userInput.charAt(3);
}
}
说明:
我们使用数组来存储你需要的两个位置。
我们使用一个字符来存储输入位置的读数。
我们得到读取输入的长度。这是为了验证它是否正确。由于正确的输入应至少超过2个字符。
我们知道第一个位置是有效的所以我们立即分配。我们也知道第二个位置无效,所以我们跳过它(charAt(2)而不是charAt(1))然后我们检查第三个位置如果不是我们分配第四个位置,则有效。
古德勒克!