1

テキスト ファイルに [3, 3, 5, 0, 0] という形式の整数行がある場合、配列リストに整数を追加するにはどうすればよいですか? 私はこれを持っていますが、機能していません:

while (input.hasNextInt())

{
    int tempInt = input.nextInt();
    rtemp.add(tempInt);
}       

カンマとブラケットをどのように処理すればよいですか?

4

6 に答える 6

2

ReplaceAll(String regex、String replace)を使用して角かっこを削除してから、Split()関数を使用して、区切り文字として「、」を使用して文字列をArrayListに分割できます。ただし、これにより文字列が数値のみを含む小さな文字列に分割されるため、Integer.parseInt()を使用して文字列をintに変換します。

于 2012-04-22T16:04:39.470 に答える
2

ファイル内の数値は文字列であり、最初に実際の整数に変換する必要があることを覚えておく必要があります。入力ファイルで各行が記述された形式(例:)であると仮定すると、これは、スペース、角かっこ、およびコンマを無視し[3, 3, 5, 0, 0]て、すべての数値を1つに追加するために機能するはずです。ArrayList

BufferedReader in = new BufferedReader(new FileReader("file.txt"));
List<Integer> ints = new ArrayList<Integer>();
String line = in.readLine();

while (line != null) {
    String[] numbers = line.split("[\\[\\],\\s]+");
    for (int i = 1; i < numbers.length; i++)
        ints.add(Integer.parseInt(numbers[i]));
    line = in.readLine();
}

in.close();
于 2012-04-22T16:10:38.053 に答える
1

テストされていませんが、これは機能するはずです。

string s = "[1,2,3,4,5]";
ArrayList list = new ArrayList();

foreach (string st in s.Replace("[", "").Replace("]", "").Split(','))
{
     list.Add(int.Parse(st));
}
于 2012-04-22T16:05:29.060 に答える
0

文字列全体を読み取り、正規表現または文字列トークナイザーを使用できます

于 2012-04-22T16:06:06.690 に答える
0

次のようなことを試すことができます:

Scanner scanner = new Scanner(file);  

while (scanner.hasNextLine()) {  
      String line = scanner.nextLine();  
      String[] nums = line.substring(1,line.length() - 1).split(",");  
      for(String n:nums){  
            list.add(Integer.valueOf(n));
      }
}

この目的で正規表現を使用することもできます。

于 2012-04-22T16:07:51.903 に答える
0
//you already know how to read those lines into Strings. 
String s="[3, 3, 5, 0, 0]";
StringTokenizer tokenizer = new StringTokenizer(s, "[,]");
while(tokenizer.hasMoreTokens())
 list.add(Integer.parseInt(tokenizer.nextToken())

java.util.StringTokenizer は、指定された区切り文字 ("["、"、" または "]") を使用して文字列を分割するのに役立ちます。

http://docs.oracle.com/javase/1.4.2/docs/api/java/util/StringTokenizer.htmlを参照してください。

于 2012-04-22T16:21:17.267 に答える