2014-03-01 83 views
-1

此代碼旨在初始化數組C及其值,然後將其打印並打印數組中的最大字符串。我使用了一個增強的for循環。調試顯示一個錯誤,「最長的名稱」沒有初始化,所以當我聲明字符串時,它增加了= null,但程序的輸出總是打印出null,而不是數組中最長的字符串,請幫忙!java數組中的字符串操作

package week14; 

public class LabArray { 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     int [] A = new int[5]; 
     int [] B = new int[5]; 
     String [] C = {"luke", "elliot", "glenn", "jonny", "jack"}; 
     int [] D = new int[5]; 
     int length = C[1].length(); 
     String longestname; 
     int nextlength; 
     for (String name: C){ 
     System.out.println(name); 
      nextlength = name.length(); 
      System.out.println(name.length()); 
      if (nextlength > length){ 
       length = nextlength; 
       longestname = name; 
      } 
     } 
     System.out.println("\nthe longest word in the array = " + longestname); 
    } 
} 
+0

看看這裏:HTTP://stackoverflow.com/questions/8632857/sorting-string-lengths-using-comparator 只需使用的集合或數組排序方法! –

回答

2

在分配這已經是與最大尺寸(埃利奧特)字符串數組的第二元件的長度的初始值,所以你永遠得到如果循環內,並且你從未分配一個值到longestname ,

初始化longestname的價值,以及

int length = C[1].length(); 
String longestname=C[1]; 
+1

從零開始長度會更清潔,但這也是有效的。 –

+0

我不應該在[0]數組地址處初始化上述兩個變量嗎? – thanatorr

+0

您可以將任何數組的元素用作初始值,但標準方式是使用第一個元素 – SteveL

0

此代碼的工作完美:

int [] A = new int[5]; 
    int [] B = new int[5]; 
    int [] D = new int[5];   
    String [] C = {"luke", "elliot", "glenn", "jonny", "jack"};  
    String longestname=null; 
    int maxlength=0; 
    for(String max:C) 
    { 
     if(maxlength<max.length()) 
     { 
      maxlength=max.length(); 
      longestname=max; 
     } 
    } 
    System.out.println("\nthe longest word in the array = " + longestname); 

輸出:

run: 

the longest word in the array = elliot 
BUILD SUCCESSFUL (total time: 0 seconds)