2011-03-30 5 views
0

2의 제곱을 최대 2^2000까지 배열에 배열 한 다음 7 개의 숫자를 모두 출력하는 프로그램을 작성하고 있습니다 줄에. 나는 모든 것을 알아 냈으므로 작동하지만 더 좋은 방법이있는 것처럼 느껴진다. 특히 중첩 된 for 루프 영역에서 그러하다. 나는 for - loop를 줄이기 위해 y를 사용한다. 그러나 나는 이것이 큰 적합성이 아닌 것처럼 느낀다. 코드 : 잘 지내 그것을 출력하기 때문에for 루프를 사용하여 한 줄에 배열의 7 요소를 인쇄합니다.

public class powers { 

    public static void main(String[] args){ 
     long arr[] = new long[2000]; 

     for (int x=0; x<2000; x++){ 
     arr[x] = (long) Math.pow(2, x); 
     } 


     for (int y=0; y<14;y++) { 
     for (int z=0; z<7; z++) { 
      System.out.print(arr[y++] + " "); 
     } 
     y--; // Decrement y by 1 so that it doesn't get double incremented when top for loop interates 
     System.out.println(); // Print a blank line after seven numbers have been on a line 
     } 

     } 

} 
+1

2^2000은 길게 들어 맞습니까? – Reinderien

+0

나는 64 비트 만 찾았으므로 확실한 대답은 아니다. – Reinderien

+0

이 경우 java.math.BigInteger가 필요합니다 ... – amit

답변

6
for (int i = 0; i < 2000; i ++) { 
    System.out.print(arr[i]); // note it's not println 
    if (i % 7 == 6) { // this will be true after every 7th element 
    System.out.println(); 
    } 
} 
0

다음 코드는 더 효율적입니다. 이런 식으로 모든 것을 반복해야하는 비용을 줄였습니다. 또한, 주석 위로 언급했듯이, long은이 힘의 위쪽 영역에 값을 저장할 수 없습니다.

public class powers { 

    public static void main(String[] args){ 
     long arr[] = new long[2000]; 

     for(int x=0; x<2000; x++){ 

      arr[x] = (long) Math.pow(2, x); 

      System.out.print(arr[x] + " "); 

      if(x%7==6) 
       System.out.println(); 

     } 

     //because your loop doesn't end on a 7th element, I add the following: 
     System.out.println(); 

    } 

}
+0

출력이 빈 줄로 시작하고 \ r \ n으로 끝나지 않습니다. – amit

+0

나쁜 것 같아요. 나는 너를 행복하게하기 위해 고쳐 줄 것이다. 잠시만 요. –

+0

그가 필요로하는 것이 아니기 때문에 나쁜 생각 인 것 같습니다. (필요하다면) \ r \ n으로 끝나는 지 확신하지 못합니다.하지만 반드시 공백으로 stat를 사용해서는 안됩니다. 선. – amit

관련 문제