2013-09-29 14 views
0

說,我從一個文本文件中的字符串像分割字符串在Java和拿起它的一部分

「是ABC 123

是DEF 456

是GHI 789」

我使用此代碼通過空格拆分字符串。

while (inputFile.hasNext()) 
    { 
    String stuff = inputFile.nextLine(); 

    String[] tokens = stuff.split(" "); 

    for (String s : tokens) 
    System.out.println(s); 
    } 

但我也想分配給一個布爾型的ABC到另一個字符串123到一個int。 我怎樣才能分別拿起他們?謝謝!

回答

1
boolean b=tokens[0].equalsIgnoreCase("yes"); 
String name=tokens[1]; 
int i=Integer.parseInt(tokens[2]); 
+0

謝謝。但parseInt如何工作?我是一個初學者,我不知道如何使用這個 –

+0

'parseInt(<< number as string >>)'方法接受一個實際上是一個數字的字符串,並將其轉換爲int數據類型,但要注意異常當字符串數據(輸入數據)不是數字形式(如190an)時。 – 2013-09-29 20:34:23

+0

不錯。我不知道。謝謝你的支持 –

0

你能澄清一下你在做什麼的確切目的是什麼?你可以用索引來引用單獨的字符串[i]。您可以將它們放入switch語句(自Java 7開始)並匹配您要查找的單詞。然後,您可以採取進一步的行動,即將字符串轉換爲布爾值或Ints。

即使您希望文件總是以空格分隔3個單詞,也應該考慮檢查輸入是否有效。

+0

沒什麼。我只是想了解如何解決這樣的問題。開關是個好主意。我會試試看它是如何工作的。謝謝! –

0

創建類LineList<Line>,將您所有的文件保存到列表:

public class Line{ 

private boolean mFlag = false; 
private int mNum = 0; 
private String mStr; 

public Line(String stuff) { 
    String[] tokens = stuff.split("[ ]+"); 

    if(tokens.length ==3){ 
     mFlag=tokens[0].equalsIgnoreCase("yes"); 
     mNum=Integer.parseInt(tokens[1]); 
     mStr=tokens[3]; 
    } 
} 
} 

,並稱之爲:

public static void main(String[] args) { 

List<Line> list = new ArrayList<Line>(); 
Line line; 

while (inputFile.hasNext()) 
{ 
    String stuff = inputFile.nextLine(); 

    line = new Line(stuff); 

    list.add(line); 
} 
} 
+0

OMG ......這段代碼中有太多我不知道的東西。也許我會嘗試我目前可以理解的事情。不管怎樣,謝謝你。 –

+0

只是爲了將來,通過這種方式,你可以將文件存儲到對象列表中,其中每個對象包含'boolean','String','int' –

0

如果你輸入的字符串將是在同格式總是,即booleanString,int然後你可以訪問個人索引token陣列和ð它們轉換到你指定的格式

boolean opinion = tokens[0].equalsIgnoreCase("yes"); 
String temp = token[1]; 
int i = Integer.parseInt(token[2]) 

但是你可能需要創建一個數組或東西存儲值對於用戶確實否則這些變量將超過纏身從用戶每個新輸入的連續輸入。

+0

謝謝。但是如果我有3條或3條以上的線路。這就是說我有9個或更多的零件。如果我不確切知道有多少部分,我該如何製作索引? –

+0

在將每行分割輸入到3個部分後,用這些值填充3個ArrayList(只是一個例子,您可以使用任何列表),並繼續這樣做直到用戶輸入停止條件。您可以自己指定停止標準,就像用戶在沒有任何輸入的情況下按下輸入一樣 – Prateek

+0

謝謝。我看到我的想法有什麼問題。用while(inputFile。hasNext())循環,每次我只會得到3個部分。順便說一下Integer.ParseInt應該是Integer.parseInt。小寫字母 –