我有一个作业要编写一个方法,该方法接受两个字符串作为参数并返回值 1
、0
、-1
(分别)如果第一个字符串按字典顺序位于第二个字符串之前、等于或之后,则仅使用 String 类中的 charAt()
和 length()
方法。
问题是,即使我在 for 循环中初始化了一个 int 变量,但在使用 charAt()
方法时,它稍后不会在循环中识别它们。编译器一直提示“意外类型。必需:变量;找到:值”(使用 BlueJ)。
public class Word {
private String _st;
/**
* range small letters: a = 97, z = 122.
*
* range capital letters: A = 65, Z = 90.
*/
public int myCompare(String s1, String s2) {
char[] alphabet = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'};
//1st loop i;
//2nd loop j;
//3rd loop k;
for (int i = 0; i < s1.length(); i++) {
_st = new String (s1);
if (_st.charAt(i) < 97) {
_st.charAt(i) += 32;
}
for (int j = 0; alphabet[j] == _st.charAt(i); j++) {
int x = alphabet[j];
_st.charAt(i) = x;
}
}
return 1; // temporaray.
/*
if (s1.charAt(0) < s2.charAt(0)) {
return 1;
}
else if (s1.charAt(0) > s2.charAt(0)) {
return -1;
}
else {
return 0;
}*/
}
}
那么我究竟做错了什么?感谢您的帮助。
最佳答案
_st.charAt(i) += 32;
这没有意义。
_st.charAt(i)
返回一个 char
。如果您不将结果存储在某个变量中,则向该字符添加 32 没有任何意义。
您可以将其替换为:
char c = _st.charAt(i);
c += 32;
关于java - for 循环中的 String.charAt(i) 在 Java 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27677753/