2014-11-08 2 views
1

Эта программа работает до тех пор, пока переменная разделения имеет такую ​​же базовую мощность 10, что и переменная num, в этом случае число равно 12345, поэтому деление должно быть 10000. Хотя это работает для 5-значных чисел, что-либо с большим количеством или менее 5 цифр не будут напечатаны отдельные цифры. Как настроить деление на то, чтобы иметь тот же базовый 10-й уровень, что и число автоматически?Как распечатать цифры целых чисел любой длины?

public class lab5testing 
{ 
    public static void main (String args[]) 
    { 
     int num = 12345, digit = 0, divide = 10000; 
     if (num != 0) 
     { 
      while(num != 0) 
      { 
      digit = ((num/divide)%10); 
      System.out.println(digit); 
      divide /= 10; 
      if (divide == 0) 
      { 
       num = 0; 
      }    
      } 
     } 
     else 
     { 
      System.out.println(num); 
     }  
    } 
} 

ответ

1

Может быть, вы должны попробовать с этим:

int length = (int)(Math.log10(num)+1); 

, а затем:

int divide = Math.pow(10,lengh); 
+0

Я получаю ошибку говоря: несовместимые типы: возможное преобразование с потерями от двойной Int. –

+0

странно ... как насчет этого: int length = String.valueOf (num) .length(); –