我正在尝试取两个字符串并比较它们的长度。如果它们的长度不相等,程序将只打印“Bye”,但如果它们相等,我想检查第一个字符串中的每个字母是否小于或等于第二个字符串中的相应字母。如果这样,它应该打印为TRUE,否则它应该打印为FALSE。
import java.util.Scanner;
public class hw3_task2 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.printf("Enter the first string: ");
String a = in.nextLine();
System.out.printf("Enter the second string: ");
String b = in.nextLine();
char [] _a = a.toCharArray();
char [] _b = b.toCharArray();
if (a.length() == b.length());
boolean flag = true;
for(int i = 0; i < a.length(); i++){
System.out.printf("TRUE\n");
System.out.printf("Bye\n");
if( _a[i] != _b[i]){
flag = false;
System.out.printf("Bye\n");
}
}
}
}
答案 0 :(得分:2)
答案 1 :(得分:2)
你必须在字符串中循环各个字符
for (int x = 0; x < a.length(); x++) {
if (a.charAt (x) > b.charAt (x)) {
System.out.println ("First String is BIGGER");
// maybe break now ?
}
}
答案 2 :(得分:2)
你不能简单地使用Operation Not Permitted when on root El capitan (rootless disabled)功能吗?它似乎正是你所需要的:
String a = "cats";
String b = "cuts";
String result = "";
if(a.length() != b.length()){
result = "BYE";
}
else if (a.compareTo(b) <= 0){
result = "TRUE";
}
else{
result = "FALSE";
}
System.out.println(result);
答案 3 :(得分:-1)
我喜欢pyb建议的charAtSequence()
,但我自己的第一直觉却是char数组。我认为他们两个都会一样。我不想为你写完整个代码,但我希望这有帮助...
char [] _a = a.toCharArray(); // note 1
//do the same for the b string here...
else if (a.length() == b.length());
for(int i = 0; i < a.length; i++){ // note 2
//compare each character here..
}
System.out.printf("Bye");
}
如果您需要更多帮助或理解
,以下是toCharArray()
上的一些优秀资源
java documentation on tocharArray()
beginner's guide to toCharArray()
注1:此行留出一个char []变量(一个字符数组):char[]_a
第二个par = a.toCharArray
使用String类的方法,该方法将实例化字符串a
长度的char数组
然后取字符串a
的每个字母并将它们放入char []数组..
左右....
String a = cat
char[] _a = a.toCharArray();
产生数组字符
并[c]
[α]
[T]
现在我们使用字符串b
....预先形成相同的操作。
String b = cat
char[] _b = b.toCharArray();
this(因为字符串是等效的)将导致等效的数组..但是你必须测试它以确保。
为了测试这些数组的等价性,我们必须针对相应的索引测试每个索引......我们将使用for
循环
如上所示[注2],此for循环设置为在数组长的情况下运行相同的旋转次数。 (我现在不确定如何用这句话来表达我今晚没有好好使用我的话,所以如果你能说得更好,请做...)那么我们将把每个指数与这里的相应数据进行比较... < / p>
boolean flag = true;
for(int i = 0; i < a.length; i++){
// ( or > or < or >= or <= ) however it is you wish to compare these
if( _a[i] != _b[i]){
flag = false;
}
}
然后如果flag == true,则打印出相应的消息,然后打印其他消息......
这个答案..
if( _a[i] != _b[i]){
flag = false;
System.out.printf("Bye\n");
}
拿走你的System.out.print,然后将它移到你的循环之外..
每当你的循环通过它打印再见...
尝试打印Flag和bye的语句......