2014-11-08 5 views
0

Это мой код, и он компилирует нормально, но когда я пытаюсь создать строку он говорит Ошибка: не удается найти символ - переменная гонщикОшибка в моей программе Word, в Java

public class Word { 
    private String original; 

    public Word(String s) { 
     original = s; 
    } 
    public String reverse() { 
     String reverse= ""; 
     int x = 1; 
     int length = original.length(); 
     while (length - x >= 0) { 
     reverse = reverse + original.substring(length -x); 
     x++; 
     } 
     return reverse; 

    } 
    public boolean isPalindrome() { 
     if(original.equals(reverse())) 
     return true; 
     else 
     return false;  
    }  
} 
+6

Я не «Невозможно использовать переменную' racer' в любом месте ... Кроме того, 'isPalindrome()' может быть упрощено для 'return original.equals (reverse())' – August

+10

Я предполагаю, что вы создаете «новое слово» (гонщик) 'вместо« нового слова »(« гонщик »). – irrelephant

+2

Можете ли вы показать часть кода, где находится фактическая ошибка? Это не здесь. –

ответ

0

Я не вижу переменная гонщик в любом месте, но так как вы используете реверс внутри метода, я бы рекомендовал сделать это

скорее всего, гонщик никогда не был определен

либо это, либо метод был вызван без кавычек

isPalindrome(racer)//note the lack of quotes 

change reverse() to this

private() String reverse() { 
    String reverse= ""; 
    int x = 1; 
    int length = original.length(); 
    while (length - x >= 0) { 
    reverse = reverse + original.substring(length -x); 
    x++; 
    } 
    return reverse; 
3

Поставленная проблема не в коде отвечал - моя догадка комментарий irrelephant является правильным, то есть изменение new Word(racer) ->new Word("racer").

Но я предлагаю, чтобы это устранить любую возможность каких-либо ошибок в вашем коде, в основном, устраняя код:

public class Word { 
    private String original; 

    public Word(String s) { 
     original = s; 
    } 

    public boolean isPalindrome() 
     return new StringBuilder(original).reverse().toString().equals(original); 
    } 
} 

или если вы должны выставить reverse() метод:

public class Word { 
    private String original; 

    public Word(String s) { 
     original = s; 
    } 

    public String reverse() { 
     return new StringBuilder(original).reverse().toString(); 
    } 

    public boolean isPalindrome() 
     return reverse().equals(original); 
    } 
} 
+0

Большое спасибо –

Смежные вопросы