2017-03-13 1 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; 
} 
} 
} 

그런 다음이 인쇄됩니다 그렇지 않으면 #을 인쇄해야 해당하는 경우, 배열을 인쇄하려면이 옵션을 포함하는 인쇄 방법이있을 것입니다 노력했다.

유일한 문제는 사용자가 적어도 10자를 입력하지 않으면 charAt를 수행 할 수 없으므로 오류가 발생한다는 것입니다. 다음은 사용자 입력이 어떻게 보이고 어떻게해야하는지에 대한 예입니다. 사용자 입력 #의 .d.sd 유일한 문제는 여기서 그것을이어야 (10)이 없기 때문에 경우 userinputs이

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

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

는이

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

처럼 그 5 라인 같은 일을 인쇄한다 문자. 그것이해야 할 일은 위에 인쇄 된 것과 같습니다. 단지 그 자리를 "."로 채 웁니다. 누군가 내가 이것을 해결할 수있는 방법을 알고 있다면 그것은 좋을 것입니다.

+0

100 % 확실 당신이 원하지만 그것이 될 수있는 것을 얻을 : 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)'가 잘못되었습니다. 값이 true인지 아닌지를 확인하기보다는 word [i] [j]에 값을 할당합니다. 부울 값을 true 또는 false와 비교해서는 안되며 부울 값이므로 값 자체 만 사용하십시오. if (word [i] [j]) {...}'또는 false를 검사 할 때 if (! word [i] [j]) {}'이렇게하면'='를 사용하는 문제를 피할 수 있습니다. 정말 의미가'==' – FredK

답변

1

당신은 경계가이 라인이 조건을 추가

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

오, 그래, 나는 그 생각조차하지 않았다. 와우. 감사. –

0

처럼, 당신의 문자열 temp 확인이 필요

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

관련 문제