找到数组中最短的元素。 Java的。奇怪的错误

时间:2015-02-03 20:03:36

标签: java

public class  Sentence {                                                                   
private static String[] words = new String[]{"Hello", "name", "is", "Bob"};

public String shortest(){                       
int shortestelement = 0;                    
String shortest ="";                        
for(int i = 0; i<words.length;i++){         
    if(shortest.length()<=words[i].length())
        shortest=words[i];                  
public static void main(String[] args) {                 
System.out.println("Shortest word"+words.shortest());

现在运行的错误是&#34; Java:找不到符号。符号:方法shortest()。位置:java.lang.String []。

类型的变量字

这可能是一个非常愚蠢的错误。

4 个答案:

答案 0 :(得分:0)

words.shortest()替换为new Sentence().shortest()

答案 1 :(得分:0)

您尝试通过shortest words ArrayString来调用shortest,因此不包含解释该cannot find symbol的{​​{1}}方法shortest

Sentence位于main类...如果您想从static调用它,则需要声明public String shortest(){ 。改变

public static String shortest(){

System.out.println("Shortest word"+words.shortest());

然后改变

System.out.println("Shortest word"+Sentence.shortest());

camelCase

顺便说一句,按照惯例,java方法应遵循shortest规则。

http://en.wikipedia.org/wiki/CamelCase

public String shortest(){ String shortest=""; for(int i = 0; i < words.length; i++){ if(shortest.isEmpty()) shortest = words[i]; else if(shortest.length() > words[i].length()) shortest=words[i]; } return shortest; } 方法中的算法也是错误的,这里有一个可行的代码段:

{{1}}

答案 2 :(得分:0)

public class  Sentence {                                                                   
    private static String[] words = new String[]{"Hello", "name", "is", "Bob"};

    private static String shortest(){                       
        int shortestelement = 0;                    
        String shortest ="";                        
        for(int i = 0; i<words.length;i++){         
            if(shortest.length() > words[i].length()) {
                shortest=words[i];
            }
        }
    }

    public static void main(String[] args) {                 
        System.out.println("Shortest word: " + shortest());
    }
}

答案 3 :(得分:0)

Lambda表达式可以使您的算法更简单地找到最短值。

String数组转换为列表,然后使用sorted()按升序对列表进行比较和排序。最后,使用findFirst()获取列表的第一个值(排序后最短)。

String[] words = new String[]{"Hello", "aadsads", "adssadsadads", "aaa"};
String shortest = Arrays.asList(words).stream()
        .sorted((e2, e1) -> e1.length() > e2.length() ? -1 : 1)
        .findFirst().get();