我在使用java阅读文本文件时遇到问题。文本文件具有以下格式:
String
String
String
String
Int
Int
Int
Int
每个String和int值在末尾都有一个新的行字符,并且在stings和int之间有一个空行。我想将每个字符串值保存到字符串数组中,但我无法弄清楚如何让扫描仪停在空白行。我尝试了各种方法,比如直到有一个int,直到hasNext的值为“”,并试图只读取字符串但没有任何工作。有人可以提供任何帮助吗?
答案 0 :(得分:4)
您的示例中不确定您是否有4个String
和4个Integer
或更多,因此以下内容应该有效:
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());
}
答案 1 :(得分:0)
while (mScanner.hasNextLine()){
String line = mScanner.nextLine();
if (line.length() == 0)
break;
else
mArrayList.add(line);//do stuff
}
答案 2 :(得分:0)
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);
}
}
cat dat
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
从你看到的原始问题来看,我对文件格式略有不同,但你看到:我没有对换行或空换行做任何特别的事情。
所以该程序也适合你。