为什么它不会识别我的方法?

时间:2016-12-13 18:52:58

标签: java debugging

import java.lang.String;
public class Word
{
    /** 
     * constructs a Word with String value s
     * @param s is string value of Word
     */
    public Word(String s)
    {
        original = s;
    }

    /**
     * reverses letters in original string 
     * @return a string that is a reverse of original
     */
    public String reverse()
    {
        String temp = original;
        String areverse = "";
        int x;
        for (x = temp.length() ; x>0 || x==0 ; x -- )
        {   
            areverse = temp.substring(x);
        }
        return areverse;
    }

    /**    
     * determines is word is a palindrome
     * @return true if word is a palindrome, false otherwise
     */
    public boolean isPalindrome()
    {
        boolean flag = false;
        String temp = original;
        if (temp.equals(temp.reverse()))
            flag = true;
        return flag;

    }

    /** 
     * Alternate method to determine if word is a palindrome
     * @return true if word is a palindrome, false otherwise    
     */
    public boolean isPalindrome2()
    { 
        String temp = original;
        int x = temp.length();
        boolean flag = false;
        int y = 0;
        while (temp.subtring(y).equals(temp.substring(x)) && (x>0 || x==0))
        {
            x--;
            y++;
        }
        if (x==0)
            flag=true;
        return flag;


    }

    private String original;
}

我必须编写这个程序,找到一个单词的反转,并以两种不同的方式确定一个单词是一个回文。我只给出了方法名称,然后给出了有关方法的注释,但方法中的所有代码都是我的。当我在第一个回文方法中使用reverse()方法时,bluej告诉我它找不到变量或方法“反向”,即使我在代码中早先定义它。我的问题是什么?感谢

3 个答案:

答案 0 :(得分:1)

你正在对String对象" temp"调用reverse。您已在reverse类中定义了Word - 方法,因此您需要在Word对象上调用它。

答案 1 :(得分:0)

问题是你要将temp设置为一个字符串,但是反向方法不是在字符串类中,而是在你的类中,但你在尝试在字符串中找到它时

temp.reverse();

你可以通过使用反向方法接受一个字符串AND并返回一个字符串来解决这个问题,它所接受的字符串是它正在反转的字符串,返回的是反向字符串。

public String reverse(String string)

然后你在你的班级中调用方法

if (temp.equals(reverse(temp)))
    flag = true;

所以新的反向方法看起来像

public String reverse(String string)
{
    String areverse = "";
    for (int x = string.length(); x>0; x--)
    {   
        areverse += string.charAt(x - 1);
    }
    return areverse;
}

答案 2 :(得分:0)

您应该使用

new StringBuilder(original).reverse().toString()

以获得相反的结果。方法逆转不存在于String类型中。