如果没有字符可以检查,如何设置值



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

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

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个字符,它将出现错误,因为它不可能做任何事情。这是用户input的外观以及应该做什么的示例。如果userInput此

#..jh##pop#jfhjdfh#
..fjd#jdjk#kkjnjk
dklsd#klmsfkdfmsdf
#.d.sd
##########
fjdfgk#3fdlksf
l#ldflfsdfl#dflsdf

它应该像这样打印出

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

因此,像用户输入#.D.SD的第五行之类的东西是唯一的问题,因为它没有至少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;
}

将此条件添加到此行

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

相关内容

最新更新