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 []。
类型的变量字这可能是一个非常愚蠢的错误。
答案 0 :(得分:0)
将words.shortest()
替换为new Sentence().shortest()
。
答案 1 :(得分:0)
您尝试通过shortest
words
Array
来String
来调用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();