【发布时间】:2020-05-31 14:07:53
【问题描述】:
我的代码正在检查给定的字符串是否为某种格式。字符串的第一个字符必须是大写字母,字符串的其余部分必须是从 1 到给定维度的任意数字。
如果字符串的第一个字符包含来自字母数组的字符串,则代码会检查字符串的其余部分是否包含来自 numbers 数组的数字。要成为有效坐标,两个条件都必须为真,如果其中一个为假,则不是有效坐标。我想返回布尔值 isValidCoordinate 但 IntelliJ 告诉我我必须初始化 isValid 坐标。为什么我必须初始化它,布尔表达式取决于'if'条件。
谢谢。
public static boolean validCoordinate(String coordinate, int dimension) {
boolean isValidCoordinate;
String [] alphabet = {"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};
int [] numbers = new int [dimension];
int one = 1;
for(int i = 0; i < dimension; i++){
numbers[i] = one + i;
}
for(int i = 0; i < dimension; i++){
if((Character.toString(coordinate.charAt(0))).contains(alphabet[i])) {
for(int j = 0; j < dimension; j++) {
if ((coordinate.substring(1)).contains(Integer.toString(numbers[j]))) {
isValidCoordinate = true;
}
else {
isValidCoordinate = false;
}
}
}
else {
isValidCoordinate = false;
}
}
return isValidCoordinate;
}
这是我的最终代码:
public static boolean validCoordinate(String coordinate, int dimension) {
boolean isValidCoordinate;
String [] alphabet = {"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};
int [] numbers = new int [dimension];
int one = 1;
for(int i = 0; i < dimension; i++){
numbers[i] = one + i;
}
for(int i = 0; i < dimension; i++){
if((Character.toString(coordinate.charAt(0))).contains(alphabet[i])) {
for(int j = 0; j < dimension; j++) {
if ((coordinate.substring(1)).contains(Integer.toString(numbers[j]))) {
isValidCoordinate = true;
}
else {
isValidCoordinate = false;
}
}
}
else {
isValidCoordinate = false;
}
}
return true;
}
【问题讨论】:
-
因为在您的情况下,您的布尔值可能永远不会分配任何值。只需使用“boolean isValiedCoordinate = false”对其进行初始化即可。
-
为什么要创建一个包含所有字母字符的数组?使用 Regex OR 取决于每个字符的 ASCII 码
-
我不知道如何做正则表达式,对不起。
标签: java arrays initialization boolean