1

私は新しい行をフィルタリングしていますが、最初は2番目のループで動作し、line 2ファイリングに失敗しました。

例外:

run:
a[line 1]l[0]
Exception in thread "main" java.util.NoSuchElementException
a[line 2]l[1]
a[line 3]l[2]
b[line 1]l[0]
b[line 3]l[1]
    at java.util.Scanner.throwFor(Scanner.java:855)
    at java.util.Scanner.next(Scanner.java:1364)
    at ui.Test.main(Test.java:82)

コード:

// a) Lines
String a = "line 1\n\r" +
           "line 2\n\r" +
           "line 3\n\r";                
// b) Total length 
int len = 0;    
Scanner sc = new Scanner(a).useDelimiter("\r?\n\r|\\|");
while (sc.hasNext()) {
  System.out.println("a[" + sc.next() + "]l[" +  len + "]" ); 
  len++;
}

// c) Prepare array 
String[] value;
value = new String[len+1];
len = 0;    
sc = new Scanner(a).useDelimiter("\r?\n\r|\\|");
while (sc.hasNext()) {
  System.out.println("b[" + sc.next() + "]l[" +  len + "]" ); 
  value[len] = sc.next();
  len++;
}

// d) Goal - use the value for JComboBox
System.out.println(value);
4

1 に答える 1

1

2番目のループでnextを2回呼び出し、1回呼び出して、値を格納します。

String val;
while (sc.hasNext()) {
  val=sc.next();
  System.out.println("b[" + val + "]l[" +  len + "]" ); 
  value[len] = val;
  len++;
}
于 2012-04-22T23:06:22.563 に答える