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

时间:2017-03-13 20:08:43

标签: java char set

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

如果char是#,我想将数组设置为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;
}
}
}

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

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个字符,则会产生错误,因为它无法执行任何操作。 以下是用户输入可能的样子以及应该做什么的示例。 如果用户输入此

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

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

它应该像这样打印出来

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

因此用户输入的第5行#.d.sd是唯一的问题,因为它没有至少10个字符。它应该做的就像上面印刷的那样,只需用#34;填充这些点。&#34; 如果有人知道如何解决这个问题会很棒。

2 个答案:

答案 0 :(得分:1)

您需要对字符串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;
}

答案 1 :(得分:0)

将此条件添加到此行

if(temp.equals("") || temp.length()<10){ world[i][j] = false; }