[新手JAVA] - 岩岩自學緊寫一個 READ 人INPUT 既數目字,然後出英文星期既PROGRAM,希望各位過目一下,然後給一點意見,謝謝!!

本帖最後由 hoppip 於 2010-8-3 00:30 編輯

e個係d 書叫我做既EXERCISE,但係做完硬係覺得自己做得唔好...
覺得應該有改善空間
  1. import java.io.*;

  2. public class week{
  3. public static void main(
  4.         String[] args) throws Exception{
  5.         BufferedReader in = new BufferedReader(
  6.         new InputStreamReader(System.in));
  7.                 System.out.println("Please enter the number");
  8.                 int day = Integer.parseInt(in.readLine());
  9.                 do{
  10.                         if ((day >= 0) && (day <=7)) {
  11.                         switch (day) {
  12.                                 case 1:
  13.                                         System.out.println("Monday");
  14.                                         break;
  15.                                 case 2:
  16.                                         System.out.println("Tuesday");
  17.                                         break;
  18.                                 case 3:
  19.                                         System.out.println("Wednesday");
  20.                                         break;
  21.                                 case 4:
  22.                                         System.out.println("Thursday");
  23.                                         break;
  24.                                 case 5:
  25.                                         System.out.println("Friday");
  26.                                         break;
  27.                                 case 6:
  28.                                         System.out.println("Saturday");
  29.                                         break;
  30.                                 case 7:
  31.                                         System.out.println("Sunday");
  32.                                         break;
  33.                                 }
  34.                                 System.out.println("Please enter the number");
  35.                                 day = Integer.parseInt(in.readLine());
  36.                                 }
  37.                                 else {
  38.                                         System.out.println("Error Input. Please Enter the number again");
  39.                                         day = Integer.parseInt(in.readLine());
  40.                                         }
  41.                 } while (day != 0) ;
  42.                 System.out.println("BYE BYE!");
  43.                 }
  44.         }
複製代碼
FUNCTION :
USER 如果打0 就停
1-7 就出對應既 DAY

請問呢,E 個PROGRAM 係唔係寫得太長,太"CHUM"?
仲有我知道JAVA 好似有個野叫SCANNER?
如果用SCANNER,又點樣攪...?

可能我借錯書來學,本野一路有D EXAMPLE 比我睇
但係到真正落場打,我就發現我唔明D EXPRESSION 攪緊咩
例如:我唔係好明E 幾句攪緊咩
public static void main(
        String[] args) throws Exception{
        BufferedReader in = new BufferedReader(
        new InputStreamReader(System.in));
                System.out.println("Please enter the number");
                int day = Integer.parseInt(in.readLine());

我想問呢...JAVA read 野係唔係一定要↓?
day = Integer.parseInt(in.readLine());
即係要講明佢係咩data type?

--------------------------------------
我驚我寫壞手勢 ,望各位能給一點意見... ...

本帖最後由 mgchat 於 2010-8-3 01:48 編輯

我都係java新手,我覺得個flow錯左

你係先問左個user入幾日
之後先再do while 再問個user入幾日做第2次

如果係我我會咁做
do{
input day
   switch(day){
     case 0:
     case 1:
     case 2:
     case 3:
     case 4:
     case 5:
     case 6:
     case 7:
     default:
         //用default 黎 handle 唔係入1~7
}
}while( day !=0)




public static void main(String[] args)throws Exception{
//呢句係成個program既header(?)
      BufferedReader in = new BufferedReader(new InputStreamReader(System.in))
// 入字的話唔駛要用到bufferedreader,buffer reader係用黎read file 既 text
//單純叫user入數字 用 scanner就ok
  1. Scanner sc = new Scanner(System.in);
  2. int day = sc.nextInt();
複製代碼

                System.out.println("Please enter the number");
//system.out.println 係用黎出console既字,除左呢個仲有system.out.print,多左ln係會自己下一行
                int day = Integer.parseInt(in.readLine());
//Integer.parseInt(string) 係將個string 變返個數字,因為你入字係string,要轉返做integer 先可以

TOP

有陣時d code重複又重複, 可以諗下有冇其他方法, 唔一定要跟足本書
  1. final String[] values = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"};
  2. int day = -1;
  3. do {
  4.         System.out.print("Please enter the number: ");
  5.         day = ...;
  6. } while (day < 1 || day > 7);
  7. System.out.println(values[day-1]);
複製代碼

TOP

input除了可以用BufferedReader , scanner, 還有其他嗎?

TOP

input除了可以用BufferedReader , scanner, 還有其他嗎?
主人 發表於 2010-8-3 14:52



    仲有用GUI既JOptionPane.showinputdialog()

TOP

我都係java新手,我覺得個flow錯左

你係先問左個user入幾日
之後先再do while 再問個user入幾日做第2次

...
mgchat 發表於 2010-8-3 01:25 AM

係WOR! 唔記得左原來有DEFAULT... 明!


有陣時d code重複又重複, 可以諗下有冇其他方法, 唔一定要跟足本書
望月小妖 發表於 2010-8-3 02:04 AM


嗯嗯,你用ARRAY既方法更好
唔係跟書架係小弟D 劣作黎

唔該2位師兄

TOP

1) "Integer.parseInt(in.readLine());" has appeared twice.  It is better to change the loop to use it once only
2) Double-check whether Integer.parseInt() can handle all output of BufferedReader.readLine().  As a rule of thumb, we handle errors and exceptions as "local" as possible and dun let them escalate unless by design.
3) http://java.sun.com/javase/6/docs/api/ is your good friend.  Don't be afraid to read the API document.  You can start with the common classes, e.g. Integer, String, etc.

TOP

點解要用switch case去做, 如果比我既話我會用 enum,
c#可以直接令到enum名(java就唔知啦)當作output, 同埋只係需要做就係 把個input 轉做 enum type 再output 搞掂~~同覺得performance都會好d~~

TOP

回復 1# hoppip

其實新手work 到就得啦, 牙SIR都係要求咁之嘛

你攞USER 輸入既係String, 佢可能會打abcd 都得, 你可以
int day = -1;
while(day <= 0 || day >8 )
{
try{
day = Integer.parseInt(in.readLine());
}
finally
{
}
if(day != -1)
{
.......
}
}

效能方面, 你學懂JAVA language 之後才想.

TOP

if 同 switch 其實係同一類野,如何改到合埋一齊會更好

TOP