因此,我正在学习使用教科书进行编码,突然间它给出了一个使用循环的示例,并且使用了许多以前从未涉及过的概念和代码。请有人告诉我if (s.charAt(low) != s.charAt(high))
和int high = s.length() - 1;
是什么。另外,为什么low = 0
呢?我还没学会。这是查找回文的代码。谢谢
import java.util.Scanner;
public class Palindrome {
/** Main method */
public static void main(String[] args) {
// Create a Scanner
Scanner input = new Scanner(System.in);
// Prompt the user to enter a string
System.out.print("Enter a string: ");
String s = input.nextLine();
// The index of the first character in the string
int low = 0;
// The index of the last character in the string
int high = s.length() - 1;
boolean isPalindrome = true;
while (low < high) {
if (s.charAt(low) != s.charAt(high)) {
isPalindrome = false;
break;
}
low++;
high--;
}
if (isPalindrome)
System.out.println(s + " is a palindrome");
else
System.out.println(s + " is not a palindrome");
}
}
答案 0 :(得分:-1)
假设您输入文本Hello
。
文本长度Hello
是5
int high = s.length() - 1
表示您正在将4
(即5-1)存储到变量high
中。 String
中第一个字符的索引为0
。因此,H
中Hello
的索引是0
,e
的索引是1
,依此类推。因此,最后一个字符o
的索引是4
,它等于"Hello".length() - 1
。
在while
循环的第一次迭代中,条件if (s.charAt(low) != s.charAt(high))
将第一个字符(即H
)与最后一个字符(即o
)进行比较文本Hello
;因为low
的值为0
,而high
的值为4
。这也可以回答您的问题
为什么低= 0?
如果索引0
处的字符等于索引4
处的字符,则low
的值应增加为1
,而{{1 }}可以减少到high
,以便在3
循环的下一次迭代中,可以将索引while
处的字符(即第二个字符)与索引{ {1}}(即倒数第二个字符)。但是,在这种情况下(即,当输入为1
时,3
在第一次迭代中就变成Hello
,从而导致s.charAt(low) != s.charAt(high)
循环true
(即停止执行下一个迭代)。
我建议您从一个好的教程中了解Java的基础知识,例如https://docs.oracle.com/javase/tutorial/java/nutsandbolts/flow.html