2016-10-03 2 views
1

Ich brauche wirklich Hilfe in den nächsten 4 Stunden. Ich versuche ein Programm zu erstellen, das ein int aufnimmt und ein Pascal-Dreieck dieser Größe ausgibt. Aber sobald ich in dem Wert von „ROW“ durch den Scanner zu nehmen versucht, ich habe folgende Fehlermeldung wurde immer:Pascal's Triangle - Ausnahme im Thread "Haupt" 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) 

Das Programm scheint in Ordnung, wenn ich ROW als static int zusammen mit int definieren " Max ", aber sobald ich den Scanner benutze, taucht das Problem wieder auf. Danke im Voraus.

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

Abstimmung als "unklar" zu schließen, da Sie nicht diese Ausnahme würden Sie, wenn bekommen würde führe dein Programm korrekt aus. Und da du das nicht tust und da du nicht gesagt hast wie *** du deinen Code ausführst, ist es daher unklar, ob du nicht richtig antworten kannst. – Tom

+0

Sorry, ich bin ein Neuling im Codieren. Wie führe ich mein Programm korrekt aus? Und wie soll ich "wie" ich meinen Code ausführen? – nef

+0

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

Antwort

0

Dies ist eine mögliche Lösung Matrix ...

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(); 
     } 
    } 
} 

Ausgang:

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 
Verwandte Themen