JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Java 新手區  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友    訂閱主題
reply to topicthreaded modego to previous topicgo to next topic
本主題所含的標籤
無標籤
作者 使用Switch會出現亂碼然後另外compile 一個書上的範例程式又OK了!
leo88813





發文: 63
積分: 0
於 2005-04-29 23:15 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
我自己寫的:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 class Test{
  public static void main(String args[]){
    int whatday= 1;
    switch (whatday){
      case 0: System.out.println("A");
      break;
      case -1:System.out.println("B");
      break;
      case 1:System.out.println("c");
      break;
      }
 
    }
 
  }

compile沒有問題可是執行得時候出現:
1
2
3
4
5
c:\java Test
3
12
Test@107077e
        ※這個程式執行的結果應該是出現C才對!

在仔細的檢查我的程式之後確認自己的程式沒錯,然後去找了一個書上的範例來compile後執行:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/*檔案:CH04_02.java
 *說明:switch條件控制敘述應用
 */
 
 public class CH04_02{
   public static void main(String args[]){
     System.out.println("交通號誌燈說明");
     char light='r';//設定light的字元
     //switch條件敘述開始
        switch (light) {
            case 'r':
              System.out.println("紅燈亮:");
              System.out.println("請勿穿越路口");
              break;
            case 'g':
                System.out.println("綠燈亮:");
                System.out.println("請通行");
                break;
            case 'y':
              System.out.println("黃燈亮:");
                System.out.println("請加速通過路口或停止");
                break;
            default:
               System.out.println("沒有此號誌燈");
       }
   }
 }

此時compile成功執行結果OK...

然後我又不信邪又去執行Test.class
結果又正常了,印出C

最近常常出現這種情況捏,不知道有沒大大知道可能的原因啊?
這篇文章不知道怎麼分類,說他是錯誤嗎...好像又不大像...所以就沒分類嚕!


leo88813 edited on 2005-04-29 23:18
reply to postreply to post
作者 Re:使用Switch會出現亂碼然後另外compile 一個書上的範例程式又OK了! [Re:leo88813]
ezway





發文: 61
積分: 0
於 2005-04-30 15:24 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
執行了不一樣的Test.class

reply to postreply to post
作者 Re:使用Switch會出現亂碼然後另外compile 一個書上的範例程式又OK了! [Re:ezway]
leo88813





發文: 63
積分: 0
於 2005-04-30 17:01 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
ezway wrote:
執行了不一樣的Test.class

我一共執行了3次:
第一次:執行Test.class-----出現怪碼
第二次:執行CH04_07.class-----正常
第三次:執行Test.class----正常執行,印出"c"

第一次和第三次所執行的source File是一樣的,差別在有重新compile。

這樣有差嗎?


leo88813 edited on 2005-05-01 00:17
reply to postreply to post
作者 Re:使用Switch會出現亂碼然後另外compile 一個書上的範例程式又OK了! [Re:leo88813]
Duncan

還隱隱作痛

版主

發文: 7816
積分: 39
於 2005-04-30 21:00 user profilesend a private message to usersend email to Duncanreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
leo88813 wrote:
我一共執行了3次:
第一次:執行Test.class-----出現怪碼
第二次:執行CH04_07.class-----正常
第三次:執行Test.class----出現怪碼

第一次和第三次所執行的source File是一樣的,差別在有重新compile。

這樣有差嗎?


檢查你的 classpath,此 Test 非彼 Test。你一定常用 Test 來為你的測試用小程式 main class 命名,導致你的檔案系統裡有一個以上的 Test.class。


reply to postreply to post

給我
辣味豆腐 其餘免談
作者 Re:使用Switch會出現亂碼然後另外compile 一個書上的範例程式又OK了! [Re:Duncan]
leo88813





發文: 63
積分: 0
於 2005-05-01 00:16 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
Duncan wrote:
檢查你的 classpath,此 Test 非彼 Test。你一定常用 Test 來為你的測試用小程式 main class 命名,導致你的檔案系統裡有一個以上的 Test.class。


沒錯沒錯我的確常用Test來作為我測試用的程式的class名,這樣會有問題嗎?
您說此Test非彼Test?明明都用同一個source file compile的為什麼會不一樣呢?

我的classpath設定為: .
(就只有一個點)

※更正一下,上一篇回覆文第三次的執行結果為正常,印出"c"(原文已更正)


leo88813 edited on 2005-05-01 00:29
reply to postreply to post
作者 Re:使用Switch會出現亂碼然後另外compile 一個書上的範例程式又OK了! [Re:ezway]
leo88813





發文: 63
積分: 0
於 2005-05-01 00:30 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
ezway wrote:
執行了不一樣的Test.class

喔!....對吼....是執行了不一樣的Test.class

可是都同一個SourceFile compile出來的....怎麼會差別那麼多捏?

路徑都一樣喔!第2次compile Test.java 只是把原來的Test.class覆蓋掉了
然後結果就變成正確的了!...真是奇怪啊,我有點懷疑我的classpath有問題
可是,我只設了一個"."啊!


leo88813 edited on 2005-05-01 00:33
reply to postreply to post
作者 Re:使用Switch會出現亂碼然後另外compile 一個書上的範例程式又OK了! [Re:leo88813]
Duncan

還隱隱作痛

版主

發文: 7816
積分: 39
於 2005-05-01 01:30 user profilesend a private message to usersend email to Duncanreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
leo88813 wrote:
喔!....對吼....是執行了不一樣的Test.class

可是都同一個SourceFile compile出來的....怎麼會差別那麼多捏?

路徑都一樣喔!第2次compile Test.java 只是把原來的Test.class覆蓋掉了
然後結果就變成正確的了!...真是奇怪啊,我有點懷疑我的classpath有問題
可是,我只設了一個"."啊!


. 指的是當前目錄,如果你在不同的目錄下執行 java Test,而每個目錄下有不同的 Test.class,那麼執行結果不同是很正常的。

做些什麼事只有你最清楚,但是從你描述的一切看起來很明顯是你有一個以上的 Test.class 同時存在,只是你自以為你執行到的是你剛編譯的 source file 的輸出,其實不然。


reply to postreply to post

給我
辣味豆腐 其餘免談
作者 Re:使用Switch會出現亂碼然後另外compile 一個書上的範例程式又OK了! [Re:Duncan]
leo88813





發文: 63
積分: 0
於 2005-05-01 13:49 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
Duncan wrote:
. 指的是當前目錄,如果你在不同的目錄下執行 java Test,而每個目錄下有不同的 Test.class,那麼執行結果不同是很正常的。

做些什麼事只有你最清楚,但是從你描述的一切看起來很明顯是你有一個以上的 Test.class 同時存在,只是你自以為你執行到的是你剛編譯的 source file 的輸出,其實不然。


您說的我以我所理解的重新講一次,您看看是不是這樣?
有兩個 Test.java file分別為:
1. C:\SCJP\Test.java
1
2
3
4
5
public class Test{
     public static void main(String args[]){
    System.out.println("abcde");
    }
}

2. C:\JAVA HOME\Test.java與
1
2
3
4
5
public class Test{
     public static void main(String args[]){
    System.out.println("12345");
    }
}

兩者會互相影響對不對(兩者是不同的Source code)?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
C:\SCJP\>javac Test.java
 
C:\SCJP\>java Test
abcde
 
C:\SCJP\>cd C:\JAVA HOME
 
C:\JAVA HOME\>javac Test.java
 
C:\JAVA HOME\>java Test
這時候顯示的解果有可能會啟動到第一個Test.class
因為兩個檔名一樣
顯示結果可能為:
abce
而不是12345囉?


是不是這樣的意思啊?
可是如果真的這樣,那相同檔名儘管路徑不同也不可以取相同嚕?


reply to postreply to post
作者 Re:使用Switch會出現亂碼然後另外compile 一個書上的範例程式又OK了! [Re:leo88813]
ezway





發文: 61
積分: 0
於 2005-05-01 16:47 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
leo88813 wrote:
您說的我以我所理解的重新講一次,您看看是不是這樣?
有兩個 Test.java file分別為:
1. C:\SCJP\Test.java
1
2
3
4
5
public class Test{
     public static void main(String args[]){
    System.out.println("abcde");
    }
}

2. C:\JAVA HOME\Test.java與
1
2
3
4
5
public class Test{
     public static void main(String args[]){
    System.out.println("12345");
    }
}

兩者會互相影響對不對(兩者是不同的Source code)?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
C:\SCJP\>javac Test.java
 
C:\SCJP\>java Test
abcde
 
C:\SCJP\>cd C:\JAVA HOME
 
C:\JAVA HOME\>javac Test.java
 
C:\JAVA HOME\>java Test
這時候顯示的解果有可能會啟動到第一個Test.class
因為兩個檔名一樣
顯示結果可能為:
abce
而不是12345囉?


是不是這樣的意思啊?
可是如果真的這樣,那相同檔名儘管路徑不同也不可以取相同嚕?


整個java package的設計,就是,如果不是在同一個目錄下,你可以取相同的檔名.
c:\SCJP\ 下執行 java Test 會出現abcde
c:\JAVA HOME\ 執行java Test 會出現12345
這2個是完全沒有關係的.
希望你能看一下精華區中,有關package,classpath,import之類的文章.
前輩們有更詳細的解答 :Q


reply to postreply to post
作者 Re:使用Switch會出現亂碼然後另外compile 一個書上的範例程式又OK了! [Re:ezway]
leo88813





發文: 63
積分: 0
於 2005-05-01 17:02 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
ezway wrote:
整個java package的設計,就是,如果不是在同一個目錄下,你可以取相同的檔名.
c:\SCJP\ 下執行 java Test 會出現abcde
c:\JAVA HOME\ 執行java Test 會出現12345
這2個是完全沒有關係的.
希望你能看一下精華區中,有關package,classpath,import之類的文章.
前輩們有更詳細的解答 :Q


這位大大,我當然知道兩個不同路徑相同檔名是完全沒有關係的!
可是之前Duncan大大的回覆讓我很疑惑啊!?


Duncan:. 指的是當前目錄,如果你在不同的目錄下執行 java Test,而每個目錄下有不同的 Test.class,那麼執行結果不同是很正常的。


leo88813 edited on 2005-05-01 17:05
reply to postreply to post
作者 Re:使用Switch會出現亂碼然後另外compile 一個書上的範例程式又OK了! [Re:leo88813]
Duncan

還隱隱作痛

版主

發文: 7816
積分: 39
於 2005-05-01 17:18 user profilesend a private message to usersend email to Duncanreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
leo88813 wrote:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
C:\SCJP\>javac Test.java
 
C:\SCJP\>java Test
abcde
 
C:\SCJP\>cd C:\JAVA HOME
 
C:\JAVA HOME\>javac Test.java
 
C:\JAVA HOME\>java Test
這時候顯示的解果有可能會啟動到第一個Test.class
因為兩個檔名一樣
顯示結果可能為:
abce
而不是12345囉?


是不是這樣的意思啊?
可是如果真的這樣,那相同檔名儘管路徑不同也不可以取相同嚕?


會執行到哪一個 Test.class 就是看你的 classpath 怎麼設定。你在 c:\JAVA HOME 目錄下打 java Test,如果 classpath 的設定是 c:\SCJP(或是 c:\SCJP 在 c:\JAVA HOME 之前),那麼執行的就是 c:\SCJP\Test.class。


reply to postreply to post

給我
辣味豆腐 其餘免談
作者 Re:使用Switch會出現亂碼然後另外compile 一個書上的範例程式又OK了! [Re:leo88813]
Duncan

還隱隱作痛

版主

發文: 7816
積分: 39
於 2005-05-01 17:20 user profilesend a private message to usersend email to Duncanreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
leo88813 wrote:
這位大大,我當然知道兩個不同路徑相同檔名是完全沒有關係的!
可是之前Duncan大大的回覆讓我很疑惑啊!?


Duncan:. 指的是當前目錄,如果你在不同的目錄下執行 java Test,而每個目錄下有不同的 Test.class,那麼執行結果不同是很正常的。


你不覺得上面這句話和 ezway 的:

c:\SCJP\ 下執行 java Test 會出現abcde
c:\JAVA HOME\ 執行java Test 會出現12345


是同樣意思嗎?


reply to postreply to post

給我
辣味豆腐 其餘免談
作者 Re:使用Switch會出現亂碼然後另外compile 一個書上的範例程式又OK了! [Re:leo88813]
leo88813





發文: 63
積分: 0
於 2005-05-01 17:32 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
喔...對喔...我好像誤解了您的意思...

嗯...或許是我自己搞錯了路徑吧!Sad


reply to postreply to post
» JWorld@TW »  Java 新手區

reply to topicthreaded modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8