Java 回文客户端程序的"Cannot find symbol"错误



我尝试了所有内容,并浏览了许多论坛帖子,但找不到我的程序问题。我正在尝试使用客户类类中程序中的方法,它一直告诉我找不到它。如果有人能帮助我弄清楚,那就太好了。这是程序和错误:

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

我更改了几件事以使这项工作!

> 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

不知道您正在使用哪种版本的Java,但是没有String.lowerCase()方法。

也是 Palindrome can not be castString

您正在尝试将Palindrome对象分配给String,这是没有意义的。请注意,您已将string声明为String,因此您无法调用方法lowerCase()filter(),因为它们仅针对Palindrome对象定义。也许您想将removeWhite()lowerCase()的结果分配给该String

palindrome在这种情况下,它不能直接转换为字符串。您需要覆盖toString方法,并在Palindrome上调用该方法以使其成为字符串。

您可以直接在字符串上调用trimtoLowerCase函数。这些功能与Palindrome类绑定。isPalindrome应该是非静态的。每个功能中的temppalindrome本地变量应直接修改palindrome成员变量。

相关内容

最新更新