2016-02-07 11 views
-4

код должен перебрать все числа до тех пор, пока не найдет два числа, которые могут выполнить условие:Мой код не работает? Код Glitch?

фактора числа должны состоять из половины исходных чисел цифр И чисел фактора не должен быть кратное 100. PS. число факторов являются T и H.

Однако код не работает

import java.util.Scanner; 

public class VampierSlayer { 

    public static void main(String[] args) { 
     Scanner S = new Scanner(System.in); 
     System.out.println("Input A Even Digit Integer"); 
     int i = S.nextInt(); 
     String iS = Integer.toString(i); 
     int t = 0; 
     int h = 0; 
     for (h = 0; h < 1000000000; h++) { 
      if (h * t == i && iS.length()/2 == Integer.toString(h).length() 
        && iS.length()/2 == Integer.toString(t).length() && h % 100 == 1 && t % 100 == 1) { 
       System.err.println("Finish"); 
       break; 
      } else { 
       t++; 
       h = h - 1; 
      } 
      if (t > 1000) { 
       t = 0; 
       h = h + 1; 
      } 
      System.out.println(t + " " + h); 
     } 
     System.out.println(Integer.toString(h) + "," + t); 

    } 

} 
+2

Ах, 'VampierSlayer' должен быть' VampireSlayer', конечно :). На более серьезное замечание: в чем проблема? Что не работает? Вампиров не убивают? – Tunaki

+0

Проблема в том, что если я введу число ... ex 1260: программа должна вернуть 21, 60. Но программа не делает этого. 21 и 60 являются единственными числами, которые удовлетворяют условиям –

+1

Итак, что же * делает * вместо этого? Что произошло, когда вы отлаживали код за строкой, чтобы убедиться, что он работает так, как вы ожидали? –

ответ

0

«И число факторов не должно быть кратно 100.» Разве это не значит:

if (h * t == i && iS.length()/2 == Integer.toString(h).length() 
         && iS.length()/2 == Integer.toString(t).length() 
&& h % 100 != 0 && t % 100 != 0) 
1

Во-первых, вы переборе всех чисел в разрядном непоследовательно, вы не получите все возможные комбинации t-h таким образом. Гораздо лучше было бы использовать 2 вложенным для-петли:

for (int h = 0; h < ...; h++) { 
    for (int t = 0; t < ...; t++) { 
    ... 
    } 
} 

Далее, вы должны сделать некоторые исследования о том, как по модулю работ, вы должны иметь

h % 100 == 0 && t % 100 == 0 

правильно проверить, что номера t и h кратны 100.

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