这是一个家庭作业,我必须比较命令行参数中的两个字符串,将它们都转换为小写版本,执行比较并打印出字典顺序中在另一个字符串之前/小于另一个字符串的字符串。字符串可以具有任意长度。
但是,我的算法必须使用递归。
我不确定 1 - 我正在使用递归,还是 2 - 为什么它不适用于 Hello 和 Hallo 但适用于 Homework 和 homePhOne。
请帮忙!!!
import java.util.Scanner;
public class MyStringCompare
{
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
System.out.println("Input String 1");
String x = in.next();
String xl = toLowerCase(x);
System.out.println("Input String 2");
String y = in.next();
String yl = toLowerCase(y);
char a = xl.charAt(0);
char b = yl.charAt(0);
int min = 0;
if (a < b)
{
System.out.println("The smallest string is " +xl);
}
if (a > b)
{
System.out.println("The smallest string is " +yl);
}
else if (a == b)
{
min = toCompare(xl,yl);
if (min == -1)
{
System.out.println("The smallest string is " +xl);
}
if (min == 1)
{
System.out.println("The smallest string is " +yl);
}
else if (min == 0)
{
System.out.println("Two strings are equal");
}
}
}
public static String toLowerCase( String s )
{
String output;
output = "";
int i;
char a;
char b;
for (i = 0; i<s.length(); i++)
{
a = s.charAt(i);
if (a >= 65 && a <= 90)
{
b = (char)( a+32);
output = output + b;
}
else
{
output = output + a;
}
}
return output;
}
public static int toCompare (String m, String n)
{
int i = 0;
int j = 0;
int min = 0;
for (i = 0; i< m.length(); i++)
{
for (j = 0; j < n.length(); j++)
{
char a = m.charAt(i);
char b = n.charAt(j);
if (a < b)
{
min = -1;
}
if (a > b)
{
min = 1;
}
else if (a == b)
{
min = 0;
}
}
}
return min;
}
}