我在使用 java 读取文本文件时遇到问题。文本文件具有以下格式:
String
String
String
String
Int
Int
Int
Int
每个 String 和 int 值在末尾都有一个换行符,在字符串和整数之间有一个空行。我想将每个字符串值保存到一个字符串数组中,但我不太清楚如何让扫描仪在空行处停止。我尝试了各种方法,例如直到有一个 int,直到 hasNext 的值为“”,并尝试仅读取字符串但没有任何效果。有人可以提供任何帮助吗?
我在使用 java 读取文本文件时遇到问题。文本文件具有以下格式:
String
String
String
String
Int
Int
Int
Int
每个 String 和 int 值在末尾都有一个换行符,在字符串和整数之间有一个空行。我想将每个字符串值保存到一个字符串数组中,但我不太清楚如何让扫描仪在空行处停止。我尝试了各种方法,例如直到有一个 int,直到 hasNext 的值为“”,并尝试仅读取字符串但没有任何效果。有人可以提供任何帮助吗?
从您的示例中不确定您是否正好有 4 String
s 和 4 Integer
s 或更多,所以类似下面的东西应该可以工作:
List<String> strings = new ArrayList<String>();
List<Integer> ints = new ArrayList<Integer>();
while(scanner.hasNext() && !scanner.hasNextInt()) {
strings.add(scanner.next());
}
while(scanner.hasNextInt()) { // If you also want to store the ints
ints.add(scanner.nextInt());
}
while (mScanner.hasNextLine()){
String line = mScanner.nextLine();
if (line.length() == 0)
break;
else
mArrayList.add(line);//do stuff
}
public static void main (String [] args)
{
Scanner sc = new Scanner (System.in);
int count = 0;
while (sc.hasNext ())
{
String s = sc.next ();
++count;
System.out.println (count + ": " + s);
if (count == 4)
break;
}
while (sc.hasNext ())
{
int i = sc.nextInt ();
System.out.println (count + ": " + i);
}
}
猫狗
Foo
Bar
Foobar
Baz
1
2
4
8
测试:cat dat | java ScanIt
1: Foo
2: Bar
3: Foobar
4: Baz
4: 1
4: 2
4: 4
4: 8
如您所见,从最初的问题来看,我对文件格式的想法略有不同,但您会看到:我对换行符或空换行符没有做任何特别的事情。
所以这个程序也应该适合你。