我的程式有問題...... |
答題得分者是:blowfish
|
bradchow
一般會員 發表:16 回覆:13 積分:5 註冊:2002-12-11 發送簡訊給我 |
import java.io.*;
public class Untitled1
{
public static void main(String[] args) throws IOException
{
int meter,hour=0,money=0;
System.out.print("Please input this hour :");
hour=System.in.read();
System.out.print("Please input total meters :");
meter=System.in.read();
if (meter<1000)
{
money=60;
}
else if (hour<23 && hour >8)
{
money=60 ((6*(meter-1000)/500) 1);
}
else if ((hour>23 && hour<=24) || (hour>=0 && hour<=8))
{
money=60 ((6*(meter-1000)/300) 1);
}
else
{
System.out.println("看到鬼!!");
}
System.out.println("The total money is :" money);
}
} 我這個程式是要計算計程車車資的,我把程式寫好之後,再一開始要run就出問題,問題就是:
一開始的
System.out.print("Please input this hour :");
hour=System.in.read();
System.out.print("Please input total meters :");
meter=System.in.read();
我設了兩個System.in.read(),但是程式才讓我輸入一個值,就跳掉了,好奇怪,還有一個問題就是,像如果是要計算車資的話,輸入的值一定是整數值,那如果用System.in.read()這種方法讀取值,是不是只能讀到第一個字呢?那如果我要讀整個整數值的話,我要如何寫呢? 請給位大哥救救我.... 發表人 - bradchow 於 2002/12/21 11:08:13
|
blowfish
一般會員 發表:8 回覆:35 積分:18 註冊:2002-12-02 發送簡訊給我 |
引言: 我這個程式是要計算計程車車資的,我把程式寫好之後,再一開始要run就出問題,問題就是: 一開始的 System.out.print("Please input this hour :"); hour=System.in.read(); System.out.print("Please input total meters :"); meter=System.in.read(); 我設了兩個System.in.read(),但是程式才讓我輸入一個值,就跳掉了,好奇怪,還有一個問題就是,像如果是要計算車資的話,輸入的值一定是整數值,那如果用System.in.read()這種方法讀取值,是不是只能讀到第一個字呢?那如果我要讀整個整數值的話,我要如何寫呢?你可以試試下面的Code import java.io.*; public class Test01 { public Test01() { } public static void main(String[] args) { int hour = 0 ; int money = 0 ; int meter = 0; try { //把InputStream用BufferedReader包起來. BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Please Input hour: "); hour = Integer.parseInt(stdIn.readLine()); //將輸入的字串轉換成int System.out.print("\nPlease Input meter: "); meter = Integer.parseInt(stdIn.readLine()); //計算總金額 if (meter<1000){ money = 60; } else if (hour<23 && hour >8){ money = 60 ((6*(meter-1000)/500) 1); } else if ((hour>23 && hour<=24) || (hour>=0 && hour<=8)){ money=60 ((6*(meter-1000)/300) 1); }else{ System.out.println("看到鬼!!"); } System.out.println("The total money is :" money); } catch (Exception ex) { ex.printStackTrace(); } } }System.in.read()只是讀一個byte而已,所以不管你輸入再多也只是讀入第一個字而已. 可以用System.in.read(byte[] inputByte)來讀入多入字元放到Byte Array中. 至於輸入一次就會跳掉這個問題,我也有點被搞迷糊了...為什麼會這樣呢? 也麻煩請其他高手說明一下吧. BCB新手
------
=== Study, Study and Study === |
bradchow
一般會員 發表:16 回覆:13 積分:5 註冊:2002-12-11 發送簡訊給我 |
|
skini
一般會員 發表:2 回覆:30 積分:16 註冊:2002-04-15 發送簡訊給我 |
其實 System.in 就是 Standard Input Stream 的意思,所謂的 stream 就是指 flowing buffer of characters,而這個 standard input stream 就是一種 stream ,這條 stream 專門用來取得 keyboard 打入的字元,使用 standard input stream 是老式 text-based application 的必備技巧,因為必須取得客戶輸入的資料。 至於要如何處理 Standard Input Stream 的資料算是 java.io.InputStream 的主要工作,這個類別可以使用 read() 來 Reads the next byte of data from the input stream。 read() 會回答 single character 或是 -1 代表到底,所以 while (System.in.read() != -1) 變成常見的讀取 input stream 的樣式。 所以您輸入的值是 n+2個 (2是換行符號 13 10)
當您第一執行程式時,Stream 是空的,所以會等待您輸值, 例如 :
您第一輸入值 123 按Enter時,Stream 內的值會是 49 50 51 13 10
只要Stream有值時,System.in.read() 就直接取 您可試試下面程式
System.out.println(System.in.read());
System.out.println(System.in.read());
System.out.println(System.in.read());
System.out.println(System.in.read());
System.out.println(System.in.read()); 輸入 123
輸出的值應為
49
50
51
13
10 處理方法1:如 blowfish 使用 BufferedReader
處理方法2:
while ((ch = System.in.read()) != '\n')
System.out.print ((char) ch); 不同需求,有不同的處理方式
|
blowfish
一般會員 發表:8 回覆:35 積分:18 註冊:2002-12-02 發送簡訊給我 |
引言: 例如 : 您第一輸入值 123 按Enter時,Stream 內的值會是 49 50 51 13 10 只要Stream有值時,System.in.read() 就直接取 您可試試下面程式 System.out.println(System.in.read()); System.out.println(System.in.read()); System.out.println(System.in.read()); System.out.println(System.in.read()); System.out.println(System.in.read()); 輸入 123 輸出的值應為 49 50 51 13 10經過skini的詳細解釋後,終於解開我心的疑惑了. 當初我一直以為換行碼,系統自己會過濾掉. 原來是沒有.. 過我試了的結果,似乎只抓到> ===
------
=== Study, Study and Study === |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |