2017-03-13 6 views
1

基本的には、ユーザーに行を入力するよう求めています。最初の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文字を入力しないと、charAtを実行できないためエラーが発生するということです。 ここでは、ユーザー入力がどのように表示されるか、どのようにすべきかの例を示します。 userinputsこの

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

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

は、それは少なくとも10を持っていないので、ユーザは#の.d.sdを入力したことを第5のラインのようなものが唯一の問題である。この

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

のように印刷する必要がある場合文字。それが何をすべきかは、上に印刷されたものと同じです。 誰かが私がこれを解決できる方法を知っていれば、それは素晴らしいことでしょう。あなたは境界が

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; 
} 
+0

をこの条件を追加します。 if(world [i] [j] = true){System.out.print(world [i] [j]);代わりに:if(world [i] [j] = true){ System.out.print( "#"); –

+1

'if(world [i] [j] = true)'が間違っています。その値が真であるかどうかを調べるのではなく、word [i] [j]に値を割り当てます。ブール値をtrueまたはfalseと比較することは決してありません。ブール値であるため、値自体を使用してください。 if(word [i] [j]){...} 'またはfalseをチェックするif(!word [i] [j]){}'これは、 '='を使うことの問題を回避します。本当に意味した '==' – FredK

答えて

1

は、私はあなたが望む結果を得るが、それは可能性が100%わからないこの行に

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

+0

ああ、私はそれについても考えていませんでした。ワオ。ありがとう。 –

0

のように、あなたの文字列tempにチェック必要

関連する問題