到目前为止,这是我的代码:
public class Word{
String text;
public Word(String text){
this.text = text;
}
public static boolean isPalindrome(Word word){
char[] text1 = new char[word.text.length()];
for(int i = 0; i< word.text.length(); i++){
text1[i] = word.text.charAt(i);
}
char[] text2 = new char[word.text.length()];
int j = 0;
for(int i = word.text.length()-1; i >=0; i--){
text2[j] = word.text.charAt(i);
j++;
}
for(int i = 0; i < word.text.length(); i++){
if(text2[i]!=text1[i]){
return false;
}
}
return true;
}
public static void main(String[] args){
Word word = new Word("racecar");
System.out.println(isPalindrome(word));
}
}
它可以工作,但是我试图重写我的代码以某种方式传入对象并让该方法对它起作用。因此,该方法应该不接受任何输入,并且我应该能够编写object.isPalindrome()
并使其输出boolean
。
这不是用于家庭作业或其他任何东西。我只是想进一步挑战自己,因为我对物体很虚弱。
答案 0 :(得分:0)
非常简单,使用this
而不是使用word
,它引用了调用该方法的对象。然后,您需要删除static
关键字。像这样:
public boolean isPalindrome(){
char[] text1 = new char[this.text.length()];
for(int i = 0; i< this.text.length(); i++){
text1[i] = this.text.charAt(i);
}
char[] text2 = new char[this.text.length()];
int j = 0;
for(int i = this.text.length()-1; i >=0; i--){
text2[j] = this.text.charAt(i);
j++;
}
for(int i = 0; i < this.text.length(); i++){
if(text2[i]!=text1[i]){
return false;
}
}
return true;
}
然后您可以将其称为:
word.isPalindrome()
答案 1 :(得分:0)
以下答案是由于oop
标签所致。
您要执行的步骤是:
string
改成char[]
char[]
char[]
我只是将您的代码复制并粘贴到新方法中,然后返回新的Word
。
public Word reverse() {
char[] reversed = new char[text.length()];
int j = 0;
for (int i = text.length() - 1; i >= 0; i--) {
reversed[j]= text.charAt(i);
j++;
}
return new Word(String.valueOf(reversed));
}
由于方法reverse
返回一个新的Word
,因此我需要比较两个Word
对象。这可以通过equals
方法来完成。在那里,我们需要从Object
覆盖它。
public boolean isPalindrome() {
Word reversed = reverse();
return this.equals(reversed);
}
我们只是不需要它,因为我们比较两个Word
而不是两个char[]
。
public class Word {
private String text;
public Word(String text) {
this.text = text;
}
public boolean isPalindrome() {
Word reversed = reverse();
return this.equals(reversed);
}
public Word reverse() {
char[] reversed = new char[text.length()];
int j = 0;
for (int i = text.length() - 1; i >= 0; i--) {
reversed[j]= text.charAt(i);
j++;
}
return new Word(String.valueOf(reversed));
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Word word = (Word) o;
return text != null ? text.equals(word.text) : word.text == null;
}
@Override
public int hashCode() {
return text != null ? text.hashCode() : 0;
}
}
答案 2 :(得分:-1)
public class Word{
String text;
public Word(String text){
this.text = text;
}
public boolean isPalindrome(){
char[] text1 = new char[this.text.length()];
for(int i = 0; i< this.text.length(); i++){
text1[i] = this.text.charAt(i);
}
char[] text2 = new char[this.text.length()];
int j = 0;
for(int i = this.text.length()-1; i >=0; i--){
text2[j] = this.text.charAt(i);
j++;
}
for(int i = 0; i < this.text.length(); i++){
if(text2[i]!=text1[i]){
return false;
}
}
return true;
}
public static void main(String[] args){
Word word = new Word("racecar");
System.out.println(word.isPalindrome());
}
}
与static void main函数相同 整个代码;)