好的,所以目标是打印最小长度的字符串(例如,如果输入是" co","大学","大学",&# 34;大学"我想要打印出co。 我试过了这个学校。比较(____);以及其他一些东西,但我似乎无法将其打印出来。 它也不是什么花哨的东西(如果你已经阅读/首先获得第二版第二版,那么我们就在第5/6章) 我宁愿您是否可以将我链接到一个视频,该视频将显示解释需要做什么的过程,但任何事情都有帮助:我已经盯着这个编码几个星期了,有点脑子死了... 这是我到目前为止(接受用户的字符串);
ArrayList <String> colleges = new ArrayList <String> ( ) ;
String input;
Scanner scan = new Scanner(System.in) ;
while (true) {
System.out.println("Please enter your college (Press Enter twice to quit) ");
input = scan.nextLine();
if (input.equals ("")) {
break;
}
else {
colleges.add(input.toUpperCase () );
}// end of if else statement
}// end of while loop
System.out.println("The following " + colleges.size() + " colleges have been entered:");
for ( String college : colleges) {
System.out.println("\n" + college );
System.out.println("Character count: " + college.length( ) );
}// end of for each loop
答案 0 :(得分:4)
以下是您需要的步骤:
Comparator<String>
以根据字符串的长度对字符串进行排序。Collections.min()
方法使用自定义比较器,从列表中获取最短的字符串。在最紧凑的版本中,您的代码看起来像这样(假设列表中没有null
个字符串):
String shortest = Collections.min(colleges, new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
return s1.length() - s2.length();
}
});
答案 1 :(得分:0)
您可以使用以下逻辑打印给定arrayList中的最小字符串
string smallString = "";
for ( String college : colleges) {
if(smallString.length() == 0 && college.length() != 0)
{
smallString = college ;
}
else if(college.length() < smallString.length() && college.length() != 0)
{
smallString = college;
}
}
println("Smallest string is: " + smallString );
答案 2 :(得分:0)
public static String SmallestString(ArrayList <String> collegeArray){
String smallest = "";
System.out.println("");
for(String string :collegeArray){
//if input-string is null or empty
if(string == null || string.trim() == "" || string.trim().length()==0){
System.out.println("Emtpy String Encountered");
continue;
}
if(smallest == ""){
smallest = string;
continue;
}
if(string.length() < smallest.length()){
smallest = string;
}
}
return smallest;
}
用以下方式调用:
System.out.println("\nSmallest String: " + SmallestString(colleges));