2016-06-15 12 views
0

Ich versuche, eine 2D-ArrayList zu erstellen und Werte hinzuzufügen. Aus irgendeinem Grund bekomme ich immer eine NoSuchElementException. Hier2d arraylist NoSuchElementException

ist das Problem, das ich zu lösen versuchen: https://www.hackerrank.com/challenges/java-arraylist

import java.io.*; 
import java.util.*; 
import java.text.*; 
import java.math.*; 
import java.util.regex.*; 

public class Solution { 

    public static void main(String[] args) { 
     /* Enter your code here. Read input from STDIN. Print output to STDOUT. Your class should be named Solution. */ 
       Scanner input = new Scanner(System.in); 
       int TestCases = input.nextInt(); 
       ArrayList<ArrayList<Integer>> listOfLists = new ArrayList<ArrayList<Integer>>(); 

       List<ArrayList<Integer>> Sdarraylist = new ArrayList<ArrayList<Integer>>(); 

       //ArrayList<ArrayList<String>> 2darraylist = new ArrayList<>(); 
       //ArrayList<String> 1darraylist=new ArrayList<>(); 

       for(int i=0;i<TestCases;i++){ 

        ArrayList<Integer> Fdarraylist=new ArrayList<Integer>(); 
        //size of Arraylist 
        int NumbersOnCurrentLine = input.nextInt(); 
        for(int j=0;i<NumbersOnCurrentLine;j++){ 
        //add numbers on the current line to the list 
        Fdarraylist.add(input.nextInt()); 
        } 
       Sdarraylist.add(Fdarraylist); 
       }     
// data.add(new ArrayList<String>()); 
//data.get(0).add("String"); 

    } 
} 

Antwort

0

Diese Ausnahme tritt auf, wenn Sie versuchen, von einem Eingang zu lesen, aber keine Eingabe zur Verfügung steht. Eine Abhilfe wäre die Verwendung der hasNextInt() -Methode, um sicherzustellen, dass lesbare Eingaben verfügbar sind. ex)

if (input.hasNextInt()) { 
    Fdarraylist.add(input.nextInt()); 
} 

Dies ist das Ergebnis des Eingangs könnte sagen, es gibt drei Zahlen in der aktuellen Zeile, wenn sie in Wirklichkeit nur zwei sind.

1 
3 1 4 <= would cause exception. 
+0

danke, dass die Arbeit und Sinn ein wenig. –

+0

aber zur gleichen Zeit macht keinen Sinn in Bezug auf die Logik, weil meine 2-Schleife nur nach der ersten Zahl auf jeder Zeile Schleife sollte. –

+0

Also sollte ich Int aus dem aktuellen Raum lesen.So zum Beispiel, wenn meine Linie 3 6 5 2 hätte die Schleife korrekt funktionieren –

Verwandte Themen