2015-04-12 154 views
-2

這是什麼代碼。我不能得到正確的輸出的修正,我要排序的字母順序王女士有些strings.what不對這個程序不能得到正確的輸出,,,什麼與此代碼

import java.util.Scanner; 

public class Alsort { 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     Scanner in=new Scanner(System.in); 
     int i,j,n; 
     p("enter the value of n ="); 
     n=in.nextInt(); 
     String name[]=new String[8]; 
     String tname[]=new String[8]; 
     String tmp; 
     p("enter the value or names"); 
     for(i=0;i<n;i++) 
     { 
      name[i]=in.nextLine(); 
      tname[i]=name[i]; 
     } 
     for(i=0;i<n-1;i++) 
     { 
      for(j=i+1;j<n;j++) 
      { 
       if(name[i].compareToIgnoreCase(name[j])>0); 
       { 
       tmp=name[i]; 
       name[i]=name[j]; 
       name[j]=tmp;  
       } 
      } 
     } 
     p("\n---------------------------------\n"); 
     p("Input Names\tSorted Names"); 
     p("\n-----------------------------------\n"); 
     for(i=0;i<n;i++){ 
      p(tname[i]+"\t\t"+name[i]+"\n"); 
     } 

    } 


    static void p(Object anyObject){ 
     System.out.println(anyObject); 
    } 

} 
+0

你提供了什麼樣的輸入,你期望的輸出是什麼,你得到的輸出是什麼?請通過編輯將這些信息添加到您的問題中。 – RealSkeptic

回答

1

您必須刪除最後一個「;」從這一行:

  if(name[i].compareToIgnoreCase(name[j])>0); 

這是一個很常見的錯誤,的基本體,如果它的「;」本身,即空指令,以下塊

  { 
      tmp=name[i]; 
      name[i]=name[j]; 
      name[j]=tmp;  
      } 

總是執行。 如果你有自動格式的IDE我的建議是廣泛使用它,因爲它有很大幫助找到這種錯誤,在這裏的外觀自動格式後:

if (name[i].compareToIgnoreCase(name[j]) < 0) 
     ; 
    { 
     tmp = name[i]; 
     name[i] = name[j]; 
     name[j] = tmp; 
    } 

,你可以看到發現錯誤非常容易。

0

你在你的代碼

  1. 下INT不佔用整條生產線,所以你必須做nextLine()n=in.nextInt();後消耗整條生產線有一定的問題。
  2. 分號if(name[i].compareToIgnoreCase(name[j])>0);後面的分號如果要執行每次循環。

    而且如果兩個數組tnamename相同的名字,爲什麼不與長度n

初始化它們因此,代碼將

public static void main(String[] args) { 
    // TODO Auto-generated method stub 
    Scanner in = new Scanner(System. in); 
    int i, j, n; 
    p("enter the value of n ="); 
    n = in .nextInt(); in .nextLine(); 
    String name[] = new String[n]; 
    String tname[] = new String[n]; 
    String tmp; 
    p("enter the value or names"); 
    for (i = 0; i < n; i++) { 
     name[i] = in .nextLine(); 
     tname[i] = name[i]; 
    } 
    for (i = 0; i < n - 1; i++) { 
     for (j = i + 1; j < n; j++) { 
      if (name[i].compareToIgnoreCase(name[j]) > 0) { 
       tmp = name[i]; 
       name[i] = name[j]; 
       name[j] = tmp; 
      } 
     } 
    } 
    p("\n---------------------------------\n"); 
    p("Input Names\tSorted Names"); 
    p("\n-----------------------------------\n"); 

    System.out.println(Arrays.toString(tname)); 
    System.out.println(Arrays.toString(name)); 
    for (i = 0; i < n; i++) { 
     p(tname[i] + "\t\t" + name[i] + "\n"); 
    } 

} 


static void p(Object anyObject) { 
    System.out.println(anyObject); 
} 

Demo

0

更易於使用ArrayList + Collections.sort ,像這樣:

List<String> list = new ArrayList(); 
list.add("Dog"); 
list.add("House"); 
list.add("Cat"); 
list.add("Go"); 
list.add("Whoooo"); 

然後,

Collections.sort(list, String.CASE_INSENSITIVE_ORDER); 

,這將給你一個排序列表。

相關問題