2014-03-01 72 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)