2016-10-03 2 views
1

정말 앞으로 4 시간 이내에 도움이 필요합니다. int를 받아 그 크기의 Pascal 's Triangle을 출력하는 프로그램을 만들려고합니다. 내가 INT와 함께 정적 int로서 ROW를 정의하면파스칼의 삼각형 - 스레드 "main"의 예외 java.util.NoSuchElementException

Exception in thread "main" java.util.NoSuchElementException 
at java.util.Scanner.throwFor(Scanner.java:862) 
at java.util.Scanner.next(Scanner.java:1485) 
at java.util.Scanner.nextInt(Scanner.java:2117) 
at java.util.Scanner.nextInt(Scanner.java:2076) 
at Pascal.main(Pascal.java:9) 

이 프로그램은 좋은 것 같다 "나는 스캐너를 통해"ROW "의 값에 찍어 보았습니다 그러나, 일단, 나는 다음과 같은 오류 메시지를 받고있다 max "로 표시되지만 스캐너를 사용하는 즉시 문제가 다시 발생합니다. 미리 감사드립니다.

import java.util.*; 
import java.util.Scanner; 

public class Pascal { 
    private static int max = 0; 

    public static void main(String[] args) { 
     Scanner kb = new Scanner(System.in); 
     int ROW = kb.nextInt(); 
     int[][] pascal = new int[ROW + 1][]; 
     pascal[1] = new int[1 + 2]; 
     pascal[1][1] = 1; 
     for (int i = 2; i <= ROW; i++) { 
      pascal[i] = new int[i + 2]; 
      for (int j = 1; j < pascal[i].length - 1; j++) { 
       pascal[i][j] = pascal[i - 1][j - 1] + pascal[i - 1][j]; 
       String str = Integer.toString(pascal[i][j]); 
       int len = str.length(); 
       if (len > max) 
        max = len; 
      } 
     } 

     for (int i = 1; i <= ROW; i++) { 
      for (int k = ROW; k > i; k--) 
       System.out.format("%-" + max + "s", " "); 
      for (int j = 1; j < pascal[i].length - 1; j++) 
       System.out.format("%-" + (max + max) + "s", pascal[i][j]); 
      System.out.println(); 
     } 

    } 
} 
+0

투표가 "불분명"로 닫습니다 프로그램을 올바르게 실행하십시오. 그리고 당신이 그렇게하지 않았고 사용법을 말하지 않았으므로 코드를 실행하는 방법 *** 때문에 적절하게 대답 할 수 없다는 것이 명확하지 않습니다. – Tom

+0

죄송합니다, 나는 코딩 초보자입니다. "프로그램을 올바르게 실행"하는 방법은 무엇입니까? 그리고 어떻게 코드를 "어떻게"실행해야합니까? – nef

+0

http://stackoverflow.com/questions/13729294/nosuchelementexception-with-java-util-scanner – yvs

답변

0

이 매트릭스를 사용하여 가능한 솔루션입니다 ...

import java.util.Scanner; 

public class PascalTriangle { 

    public static void main(String[] args) { 
     Scanner scanner = new Scanner(System.in); 
     System.out.print("Type N: "); 
     pascalTriangle(scanner.nextInt()); 
     scanner.close(); 
    } 

    public static void pascalTriangle(final int N) { 
     int[][] triangle = new int[N][N]; 

     for (int i = 0; i < N; i++) { 
      for (int j = 0; j <= i; j++) { 
       if (j == 0) 
        triangle[i][0] = 1; 
       else 
        triangle[i][j] = triangle[i - 1][j - 1] + triangle[i - 1][j]; 
       System.out.print(triangle[i][j] + "\t"); 
      } 
      System.out.println(); 
     } 
    } 
} 

출력 : 당신이한다면이 예외를 얻을 것이기 때문에

Type N: 13 
1 
1 1 
1 2 1 
1 3 3 1 
1 4 6 4 1 
1 5 10 10 5 1 
1 6 15 20 15 6 1 
1 7 21 35 35 21 7 1 
1 8 28 56 70 56 28 8 1 
1 9 36 84 126 126 84 36 9 1 
1 10 45 120 210 252 210 120 45 10 1 
1 11 55 165 330 462 462 330 165 55 11 1 
1 12 66 220 495 792 924 792 495 220 66 12 1 
관련 문제