[英]Print lesser string from multiple command-line arguments
我想扩展当前程序以接受任意数量的命令行参数,并输出其中较小的一个(区分大小写)。 当前情况如下:
public class StringCompare {
public static void main(String[] args) {
String s1 = new String(args[0]);
String s2 = new String(args[1]);
if (s1.compareTo(s2) > 0) {
System.out.println(s2);
}
else if (s1.compareTo(s2) < 0) {
System.out.println(s1);
}
else {
System.out.println("Both are equal.");
}
}
}
我所追求的例子:
Input: aaa aa a aAa
Output: a
有什么优雅的方法可以解决这个问题?
使用Java 8语法和lambda,您可以执行以下操作:
编辑(根据@Aominè的评论建议)
public static void main(String[] args) {
String min = Arrays.stream(args)
.min(String::compareTo)
.orElse("<none>");
System.out.println(min);
}
public static void main(String[] args) { String min = Arrays.stream(args) .min(String::compareTo) .orElse("<none>"); if (!Arrays.stream(args) .allMatch(x-> x.equals(min))) { System.out.println(min); } else { System.out.println("All are equal."); } }
使用for循环和temp(较小)String变量。
//validate args , not null, and length != 0
if(args == null || args.length ==0){
System.out.println("No strings to compare");
return;
}
string lesser = args[0]; // assume 1st argument is the lesser.
for(int a=0;a<args.length;a++){
if (lesser.compareTo(args[a]) > 0) {
lesser = args[a];// the new lesser string
}
//we ignore other cases (args[a] is larger or equals, cuz we want lesser only
}
System.out.println("Lesser String is " + lesser);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.