我在使用java讀取文本文件時遇到問題。文本文件的格式如下:Java掃描器問題
String
String
String
String
Int
Int
Int
Int
隨着每個String並且具有在端部一個新行字符,並在刺和整數之間的空行int值。我想將每個字符串值保存到一個字符串數組中,但我無法弄清楚如何讓掃描器停在空行。我嘗試了各種方法,比如直到有一個int,直到hasNext的值爲「」,並試圖讀取字符串,但沒有任何工作。有人可以提供幫助嗎?
我在使用java讀取文本文件時遇到問題。文本文件的格式如下:Java掃描器問題
String
String
String
String
Int
Int
Int
Int
隨着每個String並且具有在端部一個新行字符,並在刺和整數之間的空行int值。我想將每個字符串值保存到一個字符串數組中,但我無法弄清楚如何讓掃描器停在空行。我嘗試了各種方法,比如直到有一個int,直到hasNext的值爲「」,並試圖讀取字符串,但沒有任何工作。有人可以提供幫助嗎?
不知道從你的例子,如果你恰好有4 String
秒和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());
}
我沒有確切的數字,我只用了4作爲示例 – 2012-04-22 15:38:38
好的,但是這應該仍然工作:) – 2012-04-22 15:39:55
請注意,此解決方案確實在每個單詞的「strings」列表中添加了一個新元素,而不是每行(在一行中的「foo bar」會將兩個元素添加到列表中),並且如果其中一個字符串可以被解析爲整數(例如,如果字符串行是「5個蘋果」,則會發生異常)。 – siegi 2012-04-22 16:01:21
while (mScanner.hasNextLine()){
String line = mScanner.nextLine();
if (line.length() == 0)
break;
else
mArrayList.add(line);//do stuff
}
這似乎工作更好一點,但是當我將值添加到數組列表時,它只添加第一個值 – 2012-04-22 15:33:21
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);
}
}
貓DAT
Foo
Bar
Foobar
Baz
1
2
4
8
測試: 貓DAT | java的ScanIt
1: Foo
2: Bar
3: Foobar
4: Baz
4: 1
4: 2
4: 4
4: 8
從原來的問題我有,你看,有關文件格式稍有不同的想法,但你看:我沒有做什麼特別的新行或空換行符。
所以這個程序也適合你。
爲什麼你不只是讀行? – Tudor 2012-04-22 15:17:08
顯示我們迄今爲止的代碼。也可能會更容易閱讀所有的行,然後忽略你不想要的行。 – twain249 2012-04-22 15:17:19
請發佈您嘗試過的內容,以便我們可以修復它。 – 2012-04-22 15:17:22