【发布时间】:2018-09-16 22:27:43
【问题描述】:
目前正在尝试编写一个诗歌回文检查器。这不是专门针对回文的,而是数组在两种方式中都有相同顺序的单词。比如下面是一首回文诗
Life-
imitates nature,
always moving, traveling continuously.
Continuously traveling, moving always,
nature imitates
life
我的问题是遍历数组以匹配第一个和最后一个元素,因为目前它以错误的顺序比较事物。
我的代码如下:
import java.util.Scanner;
import java.io.*;
public class WordPalindromeTest {
public static void main(String[] args) {
System.out.println("This program determines if an entered sentence/word poem is a palindrome.");
Scanner input = new Scanner(System.in);
System.out.println("Please enter a string to determine if it is a palindrome: ");
while(input.hasNextLine()) {
String palin = input.nextLine();
if(palin.equals("quit")) {
break;
}
else {
boolean isPalin = isWordPalindrome(palin);
if(isPalin == true) {
System.out.println(palin + " is a palindrome!");
}
else
System.out.println(palin + " is NOT a palindrome!");
}
}
System.out.println("Goodbye!");
input.close();
}
public static boolean isWordPalindrome(String s) {
boolean isWordPal = false;
String lowerCase = s.toLowerCase();
String replaced = lowerCase.replaceAll("[^a-zA-Z0-9\\s]", "");
String words[] = replaced.split(" ");
for(int i = 0; i < words.length; i++) {
for(int j = 0; j < words.length; j++) {
if (words[i].equals(words[j]) && i != j) {
isWordPal = true;
}
else
isWordPal = false;
}
}
return isWordPal;
}
}
具体问题是
public static boolean isWordPalindrome(String s) {
boolean isWordPal = false;
String lowerCase = s.toLowerCase();
String replaced = lowerCase.replaceAll("[^a-zA-Z0-9\\s]", "");
String words[] = replaced.split(" ");
for(int i = 0; i < words.length; i++) {
for(int j = 0; j < words.length; j++) {
if (words[i].equals(words[j]) && i != j) {
isWordPal = true;
}
else
isWordPal = false;
}
}
return isWordPal;
}
我对如何正确设置循环来比较正确的元素感到困惑。它应该将第一个元素与最后一个元素进行比较,将第二个元素与倒数第二个元素进行比较,等等,直到循环完成。我意识到在继续之前我已经将第一个数组与整个数组进行了比较。
【问题讨论】:
-
你的代码最大的错误是没有cmets。你应该先用英文写你的算法,用 cmets。然后你应该把它翻译成代码。保留 cmets。代码应该记录在案,要么通过编写方式自我记录(很少有编码人员具备),要么在 cmets 中进行解释。就像你可以在充满错误答案的考试中获得 90% 的部分一样,如果你展示了工作原理。你是这项运动的新手,可能还没有用代码思考。复杂的算法应该始终用您思考的语言编写,然后翻译成您正在学习的语言。
标签: java arrays loops palindrome