java - 如果没有要检查的字符,如何设置值

标签 java char set

所以基本上我要求用户输入一行。它只接受前 10 个字符。如果按下 Enter 键,它只会将整行设置为 false。

然后,如果字符是 #,我想将数组设置为 true,否则其他所有内容都将为 false。所以我尝试了这个

boolean[][] world = new boolean [8][10];

for(int i = 0; i< world.length; i++){
String Temp = userinput.nextLine();
for(int j = 0; j <world[i].length; j++){

if( temp.equals("")){
world[i][j] = false;

}
Else if( temp.charAt(j) == 35){
world[i][j] = true;
}
else { 
world[i][j] = false;
}
}
}

然后会有一个包含这个的 print 方法来打印数组,当它为 true 时,它​​应该打印一个 # 否则它会打印 。

for(int i = 0; i< world.length; i++){
for(int j = 0; j <world[i].length; j++){
if(world[i][j] = true){
System.out.print("#");
}
else{
System.out.print(".");
}

唯一的问题是,如果用户未输入至少 10 个字符,则会给出错误,因为不可能对 charAt 不执行任何操作。 以下是用户输入的外观及其应执行的操作的示例。 如果用户输入这个

#..jh##pop#jfhjdfh#
..fjd#jdjk#kkjnjk

dklsd#klmsfkdfmsdf
#.d.sd
##########
fjdfgk#3fdlksf
l#ldflfsdfl#dflsdf

它应该像这样打印

#....##...
.....#....
..........
.....#....
#.........
##########
......#...
.#........

因此,像用户输入 #.d.sd 的第 5 行这样的内容是唯一的问题,因为它没有至少 10 个字符。它应该做的就像上面打印的那样,只需用“.”填充这些位置即可。 如果有人知道我如何解决这个问题那就太好了。

最佳答案

您需要对字符串temp进行边界检查,例如

if( temp.equals("")){
world[i][j] = false;
}
else if (temp.length() <= j) { // Bounds check
  world[i][j] = false
}
Else if( temp.charAt(j) == 35){
world[i][j] = true;
}
else { 
world[i][j] = false;
}

关于java - 如果没有要检查的字符,如何设置值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42772528/

相关文章:

java - Spring Security - 从另一个表获取用户详细信息

java - 在 Blackberry 中上传 UTF-8 文本文件

c - 在运行时将 char[x] 调整为 char[y]

c++ - 使用指针c++的问题

c++ - 如何将类用作 set::find() 的值? - C++

java - Grails 的 AOP

java - 如何在 SOAPHandler 中使用 spring bean

c++ - 打印较大的字符串 C++ 时出现问题

python - 现场交叉口操作

mysql 已执行但未显示结果