2014-02-03 5 views
1

Я пробовал все и просматривал много сообщений на форуме, но не смог найти проблему с моей программой. Я пытаюсь использовать методы в программе в классе клиента, и он продолжает говорить мне, что не может найти его. Если бы кто-нибудь мог помочь мне разобраться в этом, это было бы здорово. Вот программы и ошибка:Ошибка «Не могу найти символ» для клиентской программы java palindrome

import javax.swing.JOptionPane; 

public class Palindrome { 

    private String palindrome; 

public Palindrome(){ 
} // end constructor 

public Palindrome(String newPalindrome){ 
     palindrome = newPalindrome; 
} // end Palindrome 

public static boolean isPalindrome(){ 

     String temp = ""; 
     boolean toBe = true; // Is a palindrome 
boolean notToBe = false; // Is not a palindrome 
     int low = 0; // First character 
     int high = temp.length() - 1; // Last character 

     while (low < high){ 
      if (temp.charAt(low) != temp.charAt(high)) 
          return notToBe; 

       low++; 
        high--; 
      } // end while 

    return toBe; 
}// end isPalindrome 

    public static String filter(){ 

String palindrome = ""; 
StringBuilder stringBuilder = new StringBuilder(); // Create a string builder 


for (int i = 0; i < palindrome.length(); i++) { // Examine each char in the string to skip alphanumeric char 
    if (Character.isLetterOrDigit(palindrome.charAt(i))) { 
    stringBuilder.append(palindrome.charAt(i)); 
    } // end if 
} // end for 

// Return a new filtered string 
return stringBuilder.toString(); 
} // end filter 

public String removeWhite(){ 

    String temp = ""; 

     temp = temp.replaceAll("\\s+",""); 

     return temp; 
} // end removeWhite 

public String lowerCase(){ 

      String temp = ""; 

      temp = temp.toLowerCase(); 

     return temp; 
    } // end toLowerCase 

} // end the class 

Вот код клиента:

import java.util.Scanner; 
import javax.swing.JOptionPane; 

public class TestPalindrome { 

public static void main(String args[]){ 


     Palindrome pal = new Palindrome("") ; 

    Scanner input = new Scanner(System.in);     
     System.out.print("Enter a string: ");// Prompt the user to enter a string 
    String temporary = (input.nextLine()); 
    String string = (""); 

     temporary = pal; 
     temporary.lowerCase(); 
     string.removeWhite(); 
     string.filter(); 
     string.isPalindrome(); 

     System.out.println(string);      
    } // end main method 

} // end the class 

Ошибка:

 TestPalindrome.java:30: error: incompatible types 

     temporary = pal; 
        ^
     required: String 

     found: Palindrome 
     TestPalindrome.java:31: error: cannot find symbol 
     temporary.lowerCase(); 
       ^
     symbol: method lowerCase() 
     location: variable temporary of type String 
     TestPalindrome.java:32: error: cannot find symbol 
     string.removeWhite(); 
      ^
     symbol: method removeWhite() 
     location: variable string of type String 
     TestPalindrome.java:33: error: cannot find symbol 
     string.filter(); 
      ^
     symbol: method filter() 
     location: variable string of type String 
     TestPalindrome.java:34: error: cannot find symbol 
     string.isPalindrome(); 
      ^
     symbol: method isPalindrome() 
     location: variable string of type String 
     5 errors 
+0

Вы не можете присвоить экземпляр '' Palindrome' к String'. –

+0

И как только вы это осознаете, вы также узнаете, что все эти методы, называемые «временными», недействительны, поскольку это не объект «Palindrome». Вам нужно либо изменить тип 'временного' на' Palindrome', либо вызвать эти методы на 'pal', а не' временные'. – SudoRahul

ответ

0

не знаю, какая версия Java, которые вы используете, но нет метода String.lowerCase().

Также Palindromecan not be cast до String.

0

Вы пытаетесь присвоить объект Palindrome объекту String, что не имеет смысла. Обратите внимание, что вы объявили string как String, поэтому вы не можете вызвать методы lowerCase() или filter(), потому что они определены только для Palindrome объектов. Возможно, вы хотите присвоить результат removeWhite() или lowerCase() тому String.

0

Палиндром в этом случае он не напрямую конвертируется в строку. Вам необходимо переопределить метод toString и вызвать его на Palindrome, чтобы превратить его в строку.

Вы можете напрямую вызвать функции trim и toLowerCase. Эти функции связаны с классом Palindrome. isPalindrome должен быть нестационарным. Локальная переменная temp или palindrome в каждой из функций должна непосредственно изменять переменную-член .

1

Я изменил несколько вещей, чтобы сделать эту работу!

> public class Palindrome { 
    private String palindrome; 

    public Palindrome() { 
    } // end constructor 

    public Palindrome(String newPalindrome) { 
     palindrome = newPalindrome; 
    } // end Palindrome 

    public static boolean isPalindrome(String string) { 

    String temp = string; 
     boolean toBe = true; // Is a palindrome 
     boolean notToBe = false; // Is not a palindrome 
     int low = 0; // First character 
     int high = temp.length() - 1; // Last character 


     while (low < high) { 
      if (temp.charAt(low) != temp.charAt(high)) 
       return notToBe; 

      low++; 
      high--; 
     } // end while 
     return toBe; 
    }// end isPalindrome 

    public static String filter(String string) { 

     String palindrome = string; 
     StringBuilder stringBuilder = new StringBuilder(); // Create a string 
                  // builder 

     for (int i = 0; i < palindrome.length(); i++) { // Examine each char in 
                 // the string to skip 
                 // alphanumeric char 
      if (Character.isLetterOrDigit(palindrome.charAt(i))) { 
       stringBuilder.append(palindrome.charAt(i)); 
      } // end if 
     } // end for 

     // Return a new filtered string 
     return stringBuilder.toString(); 
    } // end filter 

    public String removeWhite(String string) { 

     String temp = string; 

     temp = temp.replaceAll("\\s+", ""); 

     return temp; 
    } // end removeWhite 

    public String lowerCase(String string) { 

     String temp = string; 

     temp = temp.toLowerCase(); 

     return temp; 
    } // end toLowerCase 

} // end the class 

И код testpalindrome ниже ....

>package san.org.tst1; 

import java.util.Scanner; 

public class TestPalindrome { 
    public static void main(String args[]){ 


      Palindrome pal = new Palindrome("") ; 

     Scanner input = new Scanner(System.in);     
      System.out.print("Enter a string: ");// Prompt the user to enter a string 
     String temporary = (input.nextLine()); 
     String string = (""); 


      // temporary.toLowerCase(); 
      String testIsLowercase = pal.lowerCase(string); 
      String removeWhitetest = pal.removeWhite(string); 
      String filter = pal.filter(string); 
      boolean testIspalindrome = pal.isPalindrome(string); 

      System.out.println(" removing lowercase : " + testIsLowercase); 
      System.out.println(" removing removeWhite : " + removeWhitetest);     
      System.out.println(" removing Filter : " + filter);   
      System.out.println("Is Palindrome : " + testIspalindrome);      



     } // end main method 

    } // end the class 
+0

@user: Вы сделали ошибки в базовых структурах кода, пожалуйста, посмотрите на это ... – optimus

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