2017-02-15 2 views
-1

it's giving a DateTimeException.All the input values are integers. Es gibt eine DateTimeException. Alle Eingabewerte sind Ganzzahlen. Wenn die Parameter von LocalDate vom 2D-Array eingegeben werden, werden Ausnahmen ausgelöst. Warum?Java LocalDate Datatype, wenn ich Parameter von einem 2D-Array in LocalDate eingeben muss, wirft es Ausnahmen

Scanner sc=new Scanner(System.in); 
int[][] arr=new int[3][2]; 
for(int j=0;j<2;j++){ 
    for(int i=0;i<3;i++){ 
     while(sc.hasNext()){ 
      arr[i][j]=sc.nextInt(); 
      // System.out.println(arr[i][j]); 
     } 
     LocalDate ret1=LocalDate.of(arr[2][j],arr[1][j],arr[0][j]); 
     System.out.println(ret1); 
    } 

} 
+1

Bitte zeigen Sie Ihre Werte von arr [2] [j], arr [1] [j], arr [0] [j] und geben die Ausnahme ausgelöst. – Adam

+0

Kommentieren Sie das 'System.out.println (arr [i] [j])' und Sie werden es wissen. –

+0

Irgendwie bekomme ich java.time.DateTimeException. Alle meine Eingaben sind ganzzahlige Werte. Die Werte werden im Array gespeichert, geben aber Ausnahmen, wenn sie an LocalDate übergeben werden. @adam – aayushi

Antwort

0

Try this:

Scanner sc = new Scanner(System.in); 
int[][] arr = new int[3][2]; 
for(int j = 0; j < 2; j++) { 
    for(int i = 0; i < 3; i++) { 
     arr[i][j] = sc.nextInt(); 
     // System.out.println(arr[i][j]); 
    } 
    LocalDate ret1 = LocalDate.of(arr[2][j], arr[1][j], arr[0][j]); 
    System.out.println(ret1); 
} 

Sie brauchen nicht die sc.hasNext() Methode in Kombination mit System.in. Außerdem sollten Sie das LocalDate-Objekt erstellen, nachdem Sie jedem Array den gewünschten Wert zugewiesen haben. (Also in der ersten Schleife).

Wenn Sie den ganzen Tag in einer einzigen Zeile eingeben möchten würde ich lieber die ganze Zeile scannen, teilen Sie es und analysieren die restlichen Saiten auf ganze Zahlen:

Scanner sc = new Scanner(System.in); 
int[][] arr = new int[2][3]; 
for(int j = 0; j < 2; j++) { 
    String[] line = scan.nextLine().split("\\D+"); // Splits the line when there is at least one non-digit. (So you could also write something like '1 day 8th month _1776_', it just has to be in this particular order.) 
    for(int i = 0; i < 3; i++) { 
     arr[j][i] = Integer.parseInt(line[i]); 
    } 
    LocalDate date = LocalDate.of(arr[j][2], arr[j][1], arr[j][0]); 
    System.out.println(date); 
} 
Verwandte Themen