有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java修改我的代码使方法作用于对象

这是我目前的代码:

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

这不是家庭作业什么的。我只是想进一步挑战我自己,因为我对物体的能力很弱


共 (3) 个答案

  1. # 1 楼答案

    非常简单,不要使用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()
    
  2. # 2 楼答案

    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());
     }
    }
    

    与静态空洞主功能相同 整个代码;)

  3. # 3 楼答案

    下面的答案是因为oop-tag

    你的回文算法

    你要做的步骤是:

    1. string变成char[]
    2. 创建第一个的反向char[]
    3. 比较两个char[]

    重写为OOP

    二,。算法的步骤

    我只是抄袭&;将代码粘贴到一个新方法中,并返回一个新的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);
    }
    

    1号在哪里。步子

    我们这里不需要它,因为我们比较两个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;
        }
    
    }