我的任务是创建一个Bubble Breaker类型的游戏,我将我的任务分成几个较小的任务,然后我撞墙。
我创建了一个2D数组网格,无论何时程序启动,都会随机使用不同颜色的气泡。每行和每列都有编号,行数在数字中,列在字母中。
我的目标是让用户输入选择一个字符串(注意我只能使用字符串,因为我在预先设计的控制台中进行编程),例如B10,B9或10B。
我可以通过
检查字符是数字还是字母command.charAt(i) >= '0' && command.charAt(i) <= '9' // i is a counter in a for
以上允许我查找它是数字还是数字,问题是选择精确网格位置,我需要,并且不能:
答案 0 :(得分:1)
您只需要两行:
int num = Integer.parseInt(str.replaceAll("\\D", ""));
String letter = str.replaceAll("\\d", "");
字符串中字母和数字的顺序无关紧要 - 这将以任何一种方式工作。
要处理更大字符串中的一系列字母数字对,将字母解析为int x
(其中A = 1,B = 2等)并将数字分配给{{1}你可以在空格上拆分字符串并使用类似上面的代码:
int y
使用for (String pair : command.toUpperCase().split("\\s+")) {
int x = pair.replaceAll("\\d", "").charAt(0) - '@';
int y = Integer.parseInt(pair.replaceAll("\\D", ""));
}
意味着不必厌恶自己使用循环变量的乏味。
减去split()
的原因是'@'
之前的字符,因此减去它会将'A'
转换为A
,1
转换为{{ 1}}等等。
这是一些测试代码:
B
输出:
2
答案 1 :(得分:0)
要回答这个问题,只需使用if循环。 (如果第一个char是一个数字,除了最后一个解析为整数,否则从第二个解析为整数。)(如果你想知道的话,使用String.substring(start,end)将它分开)
此外,您可以使用 Character.isDigit()
代替
command.charAt(i) >= '0' && command.charAt(i) <= '9'
(仅用于代码易读性)
答案 2 :(得分:0)
char letter
)String numString
)letter
和numString
B10
或10B
。并设置只有一个字母,其余数字参见代码
String code = "10B";
char letter;
for (char c : code.toCharArray()){
if (Character.isLetter(c)){ // if the character is a letter, save if the "letter"
letter = c;
break;
}
}
String numString = code.replace(letter, ""); // replace the original string, letter for ""
// Parse if you need to
int num = Integer.parseInt(numString);
// You have the letter by itself, and the number by itself
System.out.println("Letter: " + letter + ", Number: " + num);
编辑:请尝试以下代码。我上面有一个错误
String code = "10B";
char letter = ' '; // <-- initialize
for (char c : code.toCharArray()) {
if (Character.isLetter(c)) { // if the character is a letter, save if the "letter"
letter = c;
break;
}
}
String numString = code.replace(String.valueOf(letter), ""); <-- String valueOf
int num = Integer.parseInt(numString);
System.out.println("Letter: " + letter + ", Number: " + num);
结果:Letter: B, Number: 10
答案 3 :(得分:0)
public class StringSpliter {
public static void main(String[] args) {
ArrayList<Character> chars = new ArrayList<>();
ArrayList<Integer> ints = new ArrayList<>();
String str = "T23his i43s a Stin4g Whi12ch C1on3431tains Ch 5ara32cter2343s and Alphabets";
char[] mychars = str.toCharArray();
for (int i = 0; i < mychars.length; i++) {
if (mychars[i] >= 33 && !(mychars[i] <= '9' && mychars[i] >= '0')) {
chars.add(mychars[i]);
} else if (mychars[i] >= '0' && mychars[i] <= '9') {
ints.add((Integer.parseInt(""+mychars[i])));
}
}
for (int i = 0; i < chars.size() + ints.size(); i++) {
if (i < chars.size()) {
System.out.println(chars.get(i));
} else {
System.out.println(ints.get(i - chars.size()));
}
}
}
}
试试上面的代码