2017-02-16 1 views
1

어떤 이유로 든 내가하는 일을 할 때마다 Java 프로그램에서 if else 문을 작성할 때마다 if 문 또는 if 문을 모두 실행합니다 및 기타 진술.else 문이 if else 문에서 실행되지 않습니다.

import java.util.Scanner; 

public class Week06_NelsonPimentel_Assignment { 
    public static void main(String[] args) { 
     Scanner input = new Scanner(System.in); 
     int[] validnum; 
     int i = 0; 
     validnum = new int[5]; 

     System.out.println("Please enter a number between 50 and 100"); 

     while (i < validnum.length) { 
      validnum[i] = input.nextInt(); 

      if (validnum[i] <= 101 || validnum[i] >= 49) { 
       System.out.println("yes"); 
       i++; 
      } else { 
       System.out.println("no"); 
      } 
     } 

    } 

} 
+0

는 지금은 다른 문은 단순히 제대로 – zenon

+5

'validnum [I] <= 101 || 작동하지 않을 경우 validnum [i]> = 49'는 항상 참입니다 – Eran

+4

'||'이 아니라'&&'를 의미합니다. 그러나 귀하의 논리가 귀하의 메시지와 일치하지 않는다는 것에 유의하십시오. –

답변

4

if (validnum[i] <= 101 || validnum[i] >= 49) { 항상 true로 평가됩니다, 그래서 "예"인쇄됩니다 물론 i 배열의 범위를 벗어난 경우를 제외하고 i이 증가합니다.

||&&으로 바꿉니 까?

또 다른 단계가 아닌 int[] validnum = new int[5];을 작성하는 것도 고려하십시오. 이렇게하면 validnum은 초기화되지 않은 상태가되지 않으므로 안정적인 프로그램이됩니다.

+0

"그런 식으로 validnum은 초기화되지 않은 상태가 아닙니다."Definite assignment? –

+0

처음에는 작동하지 않았지만 지금은 실제로 잘 작동하고 있습니다. 빠른 응답을 위해 모두에게 감사드립니다. 이것은 문자 그대로 3 시간 동안 나를 분열 시켰습니다! – zenon

+0

@AndyTurner : 초보자가 이해할 수있는 용어를 사용하는 것은 까다 롭습니다 (또는 적어도 난 까다 롭습니다). 너 더 좋은 생각이야? – Bathsheba

0

코드에무한 루프가 있습니다. validnum[i]이 루프 색인을 진행하지 않으면 조건에 맞지 않을 때입니다. (: 당신이 for 루프를 사용하는 경우 당신은 i++;을 NEET하지 않는 주) : if에서 i++;을 찍거나하여 while 루프를 교체

for (int i = 0; i < validnum.length; i++) { 
     validnum[i] = input.nextInt(); 

     if (validnum[i] <= 101 || validnum[i] >= 49) { 
      System.out.println("yes"); 
     } else { 
      System.out.println("no"); 
     } 
} 

당신이 배열을 사용하는 이유는 무엇입니까? 게시 한 코드에서 메모리 낭비처럼 보입니다.

0

비즈니스 로직에 따라 if 문은 항상 true를 반환합니다.

내 관측 : 100 이하 50 이상 100 문 중 하나를 만족 항상 한 경우에 50 사이에 입력 여부 (50) 사이에서 100

validnum[i] = input.nextInt(); 
if (validnum[i] <= 101 || validnum[i] >= 49) { 
} 

이 번호를 입력 해주세요 그것은이 더 큰 프로그램의 작은 부분 때문입니다 이상한 과정처럼 보이지만 경우 조건 아래

validnum[i] <= 101 
validnum[i] >= 49 
관련 문제