關鍵字: system.in.read()
我們先來看一段程式
package system.in;
import java.io.IOException;
public class SystemIn {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
int a = 0;
a = System.in.read();
System.in.getClass();
System.out.println("a=" + a);
int sum = 0;
for (int i = 0; i <= a; i++)
sum += i;
System.out.println(sum);
}
}
當我們輸入為
5
發現輸出
a=53
1431
會覺得很奇怪,為什麼我輸入的是5,結果輸出a卻為53,其實如果你瞭解read()這個函數,就很容易明白,System.in.read()返回的是輸入數值的 ASKII 碼(一個 int 整數)。
那麼怎麼來解決這種問題呢,有兩種方式可以解決
1.採用System.out.write();注意使用這種方法,只能將值輸出的時候再轉換回來,但是裡面的運算邏輯值還是錯誤的,就是sum的值還是錯誤的。
2.採用BufferedReader,但是要注意的是BufferReader讀入的是一個字串,所以我們在程式裡面還要將其轉換為Integer,我們就會發現代碼如下
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
int a = Integer.parseInt(reader.readLine());
System.out.println("a=" + a);
int sum = 0;
for (int i = 0; i <= a; i++)
sum += i;
System.out.println(sum);
使用這種方法需要注意你輸入的值,必須是數字,不能是字串
所以個人感覺,如果你之需要對自己輸入的數字做處理,比如進行相加,相減等操作,還是使用第二種方法比較好。