2014-03-27 58 views
0

我有一個關於如何在java中使用BufferedReader加載intchar的問題。如何加載int和char在java中使用BufferedReader?

我需要加載給定的String str ="2 3 XX...XXXX..." ......類似的東西。它包含2個整數和String

現在我需要首先加載2個數字,然後我需要加載的字符串,然後我需要在焦炭閱讀串字符,像閱讀XX...XXXX...一部分XX.等。這裏是我的代碼的一部分:

BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
    String str=br.readLine(); 
    number1 = Integer.parseInt(a); 
    number2 = Integer.parseInt(a); 

但這似乎是錯誤的,我不知道如何繼續。那麼有誰能告訴我如何處理這個問題?

回答

0

如果你知道輸入的格式完全一樣的,每次是,你可以用空格,像這樣分割:

BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
String str = br.readLine(); 
String[] stringArray = str.split("\\s+"); 

這會給你一個字符串數組。然後,您可以通過採取stringArray的指數法提取整數和字符:

int num1 = Integer.parseInt(stringArray[0]); 
int num2 = Integer.parseInt(stringArray[1]); 
char[] charArray = stringArray[2].toCharArray(); 

要訪問的第一個字符,你可以這樣寫:

char char1 = charArray[0]; 
+0

如果當你想到一個號不來,你可能需要處理NumberFormatException的。 – Jay

+0

是的,如果你不能確定輸入,你應該做很多事情,但是這是假設(基於問題)每次輸入都是相同的格式 –

0

這種快速和骯髒的程序分析它們。只需複製粘貼並運行它:

public static void main(String[] args) throws Exception { 
    String str = "12 345 abcdef"; 
    InputStreamReader reader = new InputStreamReader(new ByteArrayInputStream(str.getBytes())); 
    int state = 1; 
    StringBuilder builder = new StringBuilder(); 
    for (int i = reader.read(); i != -1; i = reader.read()) { 
     char c = (char) i; 
     switch (state) { 
     case 1: 
     case 2: 
      if (c == ' ') { 
       System.out.println(Integer.parseInt(builder.toString())); 
       builder = new StringBuilder(); 
       state++; 
      } else { 
       builder.append(c); 
      } 
      break; 
     default: 
      builder.append(c); 
     } 
    } 
    System.out.println(builder); 
} 

OUTPUT:

12 
345 
abcdef 
相關問題