2016-04-18 7 views
0

Мой код работает, но только если вы введете число, которое больше последнего. Введите 1000, вы получите правильный ответ, но введите 500 после и получите тот же ответ. Любая идея, что я делаю неправильно?Math.pow() в java

while (number > 0) { 
    while (nCubed < number) { 
     n++; 
     nCubed = (int) (Math.pow(n, 3)); 
    } 

    System.out.println("Results: " + (n - 1) + "^3 < " + number); 
    System.out.print("Enter a positive integer (input ends with 0): "); 
    number = input.nextInt(); 
} 
System.out.print("End of run"); 
+1

Подсказка: Попробуйте отладки путем добавления 'System.out.println ("п" + п);' после вас увеличьте его, и я думаю, вы увидите, в чем проблема. – ajb

+3

Я голосую, чтобы закрыть этот вопрос как вне темы, потому что здесь нет неотъемлемой проблемы, кроме отсутствия отладки. –

+0

@JeroenVannevel Он удовлетворяет критериям для отладочного вопроса в справочном центре, так что это не вне темы – Natecat

ответ

2

Вы должны сбросить значение nCubed и n после каждого цикла

while (number > 0) { 
    n = 0; 
    nCubed = 0; 
    while (nCubed < number) { 
     n++; 
     nCubed = (int) (Math.pow(n, 3)); 
    } 

    System.out.println("Results: " + (n - 1) + "^3 < " + number); 
    System.out.print("Enter a positive integer (input ends with 0): "); 
    number = input.nextInt(); 
} 
System.out.print("End of run"); 
+0

Вот и спасибо. Даниил за вашу помощь! – Stanmoonie

Смежные вопросы