如何将 char 数组传递给方法和 return 布尔值
How to pass a char array to a method and return a boolean value
我正在尝试编写一个程序来检查一个单词是否是回文。我的代码可以编译,但 isItPalindrome 方法中的代码似乎根本没有运行。我希望有人能指出我哪里出错了。这是我的代码:
class Main
{
public static void main ( String args[] )
{
System.out.print ("#Enter word");
String word = BIO.getString();
String wordLowerCase = word.toLowerCase(); // converts word to lower case (only way i could think of to ignore case)
char letters[] = wordLowerCase.toCharArray(); // converts string into an array of character
while ( !word.equals ("END")){
if (isItPalindrome(letters) == true)
{
System.out.print (""+word+"");
System.out.println (" is a palindrome");
}
else if (isItPalindrome(letters) == false)
{
System.out.print (""+word+"");
System.out.println (" is not a palindrome");
}
System.out.print ("#Enter word");
word = BIO.getString();
}
}
public static boolean isItPalindrome ( char letters[]){
boolean palindrome = true;
if (letters.length%2 == 0){
for (int index=0; index<letters.length/2-1; index++) //index will finish at letters/2
{
if (letters[index] != letters[letters.length-index-1]) //checks if index is the same as its opposite letter
{
return false;
}
else //if any pairs of letters are not in ascending order then it returns fasle and breaks out of the loop
{
palindrome = true;
}
}
}
else{
for (int index = 0; index < (letters.length-1)/2-1; index++)
{
if (letters[index] != letters[letters.length-index-1]){
return false;
}
else{
palindrome = true;
}
}
}
return palindrome;
}
}
除了初始单词,您的字符数组 letters
永远不会反映 main 方法内 while 循环中的当前 word
。当您说您的方法 "doesn't seem to be run at all" 时,我不知道您的意思,但我认为您的意思是 运行 输出错误。这是原因之一。务必拨打
wordLowerCase = word.toLowerCase();
letters = wordLowerCase.toCharArray();
while 循环的每次迭代。
旁注:在您的 isItPalindrome
方法中,您甚至根本不需要任何其他语句或布尔值 palindrome
。如果您发现单词不是像您现在这样的回文,只需 return false
。那么,如果你已经走到了单词的末尾,那一定是一个回文,你可以return true
.
main-method 中存在一些问题,例如 char-array 从未更新,palindrome-method 过于复杂,这是工作版本:
public static void main(String args[]) {
System.out.print("#Enter word: ");
String word = BIO.getString();
while (!word.equals("END")) {
char[] letters = word.toLowerCase().toCharArray();
if (isItPalindrome(letters) == true) {
System.out.println(word + " is a palindrome");
} else {
System.out.print(word + " is not a palindrome");
} // OR
// Use this one-liner instead of the if:
// System.out.println(word + isItPalindrome(letters) ?
// " is a palindrome" : " is not a palindrome");
System.out.print("#Enter word: ");
word = BIO.getString();
}
}
public static boolean isItPalindrome(char letters[]) {
for (int i = 0; i < letters.length / 2; i++) {
if (letters[i] != letters[letters.length - i - 1]) {
return false;
}
}
return true;
}
希望对您有所帮助。
首先,回答标题中的问题:
public boolean palindrome(char C)
具有 return 类型的 boolean
但需要您将其传递给一个字符。
第二个:
你是 over-complicating 颠倒单词来检查它们的方式。您可以简单地将单词作为字符串,并将其拆开,放入 Characters
的数组中。然后将每个char
变量放入一个Stack
中。然后,当您将它们逐个从堆栈中取出时,将它们复制到另一个 Character
s.
数组中
我正在尝试编写一个程序来检查一个单词是否是回文。我的代码可以编译,但 isItPalindrome 方法中的代码似乎根本没有运行。我希望有人能指出我哪里出错了。这是我的代码:
class Main
{
public static void main ( String args[] )
{
System.out.print ("#Enter word");
String word = BIO.getString();
String wordLowerCase = word.toLowerCase(); // converts word to lower case (only way i could think of to ignore case)
char letters[] = wordLowerCase.toCharArray(); // converts string into an array of character
while ( !word.equals ("END")){
if (isItPalindrome(letters) == true)
{
System.out.print (""+word+"");
System.out.println (" is a palindrome");
}
else if (isItPalindrome(letters) == false)
{
System.out.print (""+word+"");
System.out.println (" is not a palindrome");
}
System.out.print ("#Enter word");
word = BIO.getString();
}
}
public static boolean isItPalindrome ( char letters[]){
boolean palindrome = true;
if (letters.length%2 == 0){
for (int index=0; index<letters.length/2-1; index++) //index will finish at letters/2
{
if (letters[index] != letters[letters.length-index-1]) //checks if index is the same as its opposite letter
{
return false;
}
else //if any pairs of letters are not in ascending order then it returns fasle and breaks out of the loop
{
palindrome = true;
}
}
}
else{
for (int index = 0; index < (letters.length-1)/2-1; index++)
{
if (letters[index] != letters[letters.length-index-1]){
return false;
}
else{
palindrome = true;
}
}
}
return palindrome;
}
}
除了初始单词,您的字符数组 letters
永远不会反映 main 方法内 while 循环中的当前 word
。当您说您的方法 "doesn't seem to be run at all" 时,我不知道您的意思,但我认为您的意思是 运行 输出错误。这是原因之一。务必拨打
wordLowerCase = word.toLowerCase();
letters = wordLowerCase.toCharArray();
while 循环的每次迭代。
旁注:在您的 isItPalindrome
方法中,您甚至根本不需要任何其他语句或布尔值 palindrome
。如果您发现单词不是像您现在这样的回文,只需 return false
。那么,如果你已经走到了单词的末尾,那一定是一个回文,你可以return true
.
main-method 中存在一些问题,例如 char-array 从未更新,palindrome-method 过于复杂,这是工作版本:
public static void main(String args[]) {
System.out.print("#Enter word: ");
String word = BIO.getString();
while (!word.equals("END")) {
char[] letters = word.toLowerCase().toCharArray();
if (isItPalindrome(letters) == true) {
System.out.println(word + " is a palindrome");
} else {
System.out.print(word + " is not a palindrome");
} // OR
// Use this one-liner instead of the if:
// System.out.println(word + isItPalindrome(letters) ?
// " is a palindrome" : " is not a palindrome");
System.out.print("#Enter word: ");
word = BIO.getString();
}
}
public static boolean isItPalindrome(char letters[]) {
for (int i = 0; i < letters.length / 2; i++) {
if (letters[i] != letters[letters.length - i - 1]) {
return false;
}
}
return true;
}
希望对您有所帮助。
首先,回答标题中的问题:
public boolean palindrome(char C)
具有 return 类型的 boolean
但需要您将其传递给一个字符。
第二个:
你是 over-complicating 颠倒单词来检查它们的方式。您可以简单地将单词作为字符串,并将其拆开,放入 Characters
的数组中。然后将每个char
变量放入一个Stack
中。然后,当您将它们逐个从堆栈中取出时,将它们复制到另一个 Character
s.