2014-11-26 5 views
0

일부 iPhone 비밀번호의 보안을 테스트하는 코드 추측 프로그램을 작성하고 있습니다. (어쨌든 불법적 인 것으로 연결되거나 실제 iPhone에 침입하는 데 사용되지 않습니다.) do/while 루프는 모든 응답이 끝나면 응답을 끝내고 마지막 두 줄은 콘솔에 인쇄하지 않습니다.while 루프에서 몇 가지 자바 스크립트를 할 때 문제가 있습니다.

print("Hi!"); 
print("I am a password security tester."); 

var tries = 0 

var guess1 = 0 
var guess2 = 0 
var guess3 = 0 
var guess4 = 0 

var guess = (guess1 * 1000) + (guess2 * 100) + (guess3 * 10) + guess4; 

var password1 = (Math.floor(Math.random()*9)); 
var password2 = (Math.floor(Math.random()*9)); 
var password3 = (Math.floor(Math.random()*9)); 
var password4 = (Math.floor(Math.random()*9)); 

var password = (password1 * 1000) + (password2 * 100) + (password3 * 10) + password4; 

print("This is the randomly genorated password: " + password); 
print("And now begins the guessing"); 

do{ 
    guess1 + 1; 
    tries + 1; 
}while (password1 != guess1); 

do{ 
    guess2 + 1; 
    tries + 1; 
}while (password2 != guess2); 

do{ 
    guess3 + 1; 
    tries + 1; 
}while (password3 != guess3); 

do{ 
    guess4 + 1; 
    tries + 1; 
}while (password4 != guess4); 

print("Complete in " + tries + " tries"); 
print("The answer is: " + guess); 
+3

, 당신은 그냥 1을 추가하고 결과에 아무것도하지 않고, 변수를 설정하지 않습니다. 그래서 당신은'guess1 + = 1; '이 필요합니다. – Rhumborl

+0

여기 파티에 좀 늦었습니다. 그러나 숫자 생성에 사용 된 코드는 9가 아닌 0부터 8까지의 값을 줄 것입니다. Math.floor는 항상 내림합니다. 그리고 Math. 임의 숫자는 항상 1보다 작은 수를 제공합니다. 숫자의 전체 범위를 원한다면 Math.floor (Math.random() * 10) –

답변

1

당신은 +

guess1 + 1 반환 guess1 + 1의 가치를 말하는 대신 += 연산자를 사용해야하지만 무한 루프를 얻을 수 있도록, 직접 그 값을 증가하지 않습니다.

+1

이거나 초보자에게는 guess1 = guess1 + 1을 사용해야합니다. – Riad

3

Jacob Ewing's answer이 맞지만 또 다른 문제는 guess이 자동으로 업데이트되지 않기 때문에 결국 0이됩니다. 당신은 수행해야합니다 :

var guess = (guess1 * 1000) + (guess2 * 100) + (guess3 * 10) + guess4; 

하기 전에 : 루프에서

print("Complete in " + tries + " tries"); 
print("The answer is: " + guess); 
+0

좋은 지적 @Scimonster .. – Riad

관련 문제