2013-05-22 71 views
4

如何在使用BufferedReader時將字符串轉換爲int? 據我記得,它類似於下面:Java使用BufferedReader將字符串轉換爲int

System.out.println("input a number"); 

int n=Integer.parseInt(br.readLine(System.in)); 

但由於某些原因,它不工作。

該錯誤消息表示:發現readLine(java.io.InputStream)

沒有合適的方法,它也說是br.readLine在構造爲BufferedReader被指定了一個InputStreamReader需要不適用

+5

什麼是你所得到的錯誤?請發佈堆棧跟蹤請 – Abubakkar

+0

如果您確切地知道您的問題是什麼,那麼它會在SO上獲得答案的機率翻倍。 – NetStarter

回答

13

InputStreamReader將字節流轉換爲字符流。正如其他人所提到的,應該認識到可以從這段代碼拋出異常,如IOException和NumberFormatException。

BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
System.out.println("input a number"); 
int n = Integer.parseInt(br.readLine()); 
+1

您提供的代碼可能會引發異常。 :) –

+0

@Kocko我同意,我相信任何像樣的IDE都會提醒OP。我只是想提供一個簡潔的答案,我做了更新以提醒OP注意這些例外情況。 –

0

試試這個:

BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
    System.out.println("input a number"); 
try{ 
    int n = Integer.parseInt(br.readLine()); 
    } catch (IOException e) {e.printStackTrace();} 
1

當使用BufferedReader你要照顧它可能會拋出異常。另外,如果您提供的String無法轉換爲Integer,則Integer.parseInt(String s)方法可能會拋出NumberFormatException

try { 
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
    while ((thisLine = br.readLine()) != null) { 
    System.out.println(thisLine); 
    Integer parsed = Integer.parseInt(thisLine); 
    System.out.println("Parsed integer = " + parsed); 
    } 
} catch (IOException e) { 
    System.err.println("Error: " + e); 
} catch (NumberFormatException e) { 
    System.err.println("Invalid number"); 
} 
1

試試這個

BufferedReader br = new BufferedReader(System.in); 
String a=br.readLine() 
Integer x = Integer.valueOf(a); 
System.out.println(x);//integer value 
1

嘗試這種方式

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); 
String input = reader.readLine(); 
int n=Integer.parseInt(input); 
-1
DataInputStream br=new DataInputStream(System.in); 
System.out.println("input a number"); 
int n=Integer.parseInt(br.readLine(System.in));