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

» JWorld@TW » Java 新手區 » 學習筆記  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友    訂閱主題
reply to postflat modego to previous topicgo to next topic
本主題所含的標籤
無標籤
作者 關於陣列的問題
劉武陵





發文: 12
積分: 0
於 2019-01-07 03:13 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
版主:
你好!我想請問關於這個程式應如何撰寫才能輸出如方框的結果?
Q1:雙排序是不是先將其中一個陣列排序好,再排序另一個陣列,有沒有另外的方法?可以同時排序兩個陣列嗎?
Q2:使用氣泡排序法排序姓名字串陣列,是不是在要排序的陣列元素值後面加上.charAt(0)來表示陣列元素值的第一個字元,依照其筆劃數大小,來排序陣列?
請回答以上兩個問題。
請將正確的程式碼告之或修改我撰寫的程式碼。謝謝。
敬祝
順頌時祺
問題:
建立一個姓名陣列及一個同樣長度的年齡陣列,使用者可以依選項選擇將年齡由小到大,或由大到小排序(使用氣泡排序法),並搭配姓名輸出。
-------------------------------------------------------------------------------------------------------------------------
String[] name = new String[] {"陳一", "林二", "張三", "李四", "王五"};
int[] age = new int[(] {56, 45, 51, 48, 35};
-------------------------------------------------------------------------------------------------------------------------
要求輸出畫面:
-------------------------------------------------------------------------------------------------------------------------
| 選擇按年齡排序方式,請輸入1或2(1.遞增2.遞減):1 (按Enter鍵) |
| 排 序 後 : |
| 王五35歲, 林二45歲, 李四48歲, 張三51歲, 陳一56歲, |
|或 |
| 選擇按年齡排序方式,請輸入1或2(1.遞增2.遞減):2 (按Enter鍵) |
| 排 序 後 : |
| 陳一56歲, 張三51歲, 李四48歲, 林二45歲, 王五35歲, |
-------------------------------------------------------------------------------------------------------------------------
我撰寫的程式碼:
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
import java.util.Scanner;
public class Ch04_03{
      public static void main(String[] args){
           String[] name = new String[] {"陳一", "林二", "張三", "李四", "王五"};
           int[] age = new int[]{56, 45, 51, 48, 35};
           int m = name.length;
           int n = age.length;
           String s;
           int t, sel;
           Scanner scn = new Scanner(System.in);
           do{
                 System.out.print("選擇按年齡排序方式,請輸入1或2(1.遞增2.遞減):");
                 sel = scn.nextInt();
                 if (sel == 1){
                     for (int i = n - 2; i >= 0; i--){
                         for (int j = 0; j <= i; j++){
                              if (age[j] > age[j + 1]){
                                  t = age[j];
                                 age[j] = age[j + 1];
                                 age[j + 1] = t;
                              }
                         }
                     }
                     for (int i = m - 2; i >= 0; i--){
                          for (int j = 0; j <= i; j++){
                              if (name[j].charAt(0) > name[j + 1].charAt(0){
                                  s = name[j];
                                  name[j] = name[j +1];
                                  name[j + 1] = s;
                              }
                          }
                      }
                     System.out.println("排  序  後:");
                     for (int i = 0; i < age.length; i++)
                         System.out.print(name[i] + age[i] + "歲,");
                     System.out.println();
                     System.out.println("或");
                } else {
                     for (int i = n - 2; i  >= 0; i--){
                         for (int j = 0; j <= i; j++){
                              if (age[j] < age[j + 1]){
                                  t = age[j];
                                 age[j] = age[j + 1];
                                 age[j + 1] = t;
                              }  
                          }
                      }
                      for (int i = n - 2; i >= 0; i--){
                           for (int j = 0; j <= i; j++){
                                if (name[j].charAt(0) < name[j + 1].charAt(0)){
                                    s = name[j];
                                    name[j] = name[j + 1];
                                    name[j + 1] = s;
                                }
                           }
                       }
                      System.out.println("排  序  後  :");
                      for (int i = 0; i < name.length; i++)
                          System.out.print(name[i] + age[i] + "歲,");
                      System.out.println();
                      break;
                  }
             }while (sel == 1 || sel == 2);
        }
}

我的輸出畫面:
<與要求輸出畫面的姓名排序不同,但是年齡排序正確,不知程式碼錯誤在那一行?請告之。>
選擇按年齡排序方式,請輸入1或2(1.遞增2.遞減):1
排 序 後 :
張三35歲, 李四45歲, 林二48歲, 王五51歲, 陳一56歲,

選擇按年齡排序方式,請輸入1或2(1.遞增2.遞減):2
排 序 後 :
陳一56歲, 王五51歲, 林二48歲, 李四45歲, 張三35歲,


劉武陵 edited on 2019-01-15 17:02
reply to postreply to post
William
話題樹型展開
人氣 標題 作者 字數 發文時間
578 關於陣列的問題 劉武陵 4934 2019-01-07 03:13
436 Re:關於陣列的問題 劉武陵 1492 2019-01-19 23:27
423 Re:關於陣列的問題 clock 782 2019-01-20 05:49
449 Re:關於陣列的問題 劉武陵 26 2019-01-21 09:25
» JWorld@TW »  Java 新手區 » 學習筆記

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

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8