Java 说这个方法有一个构造函数名

Posted

技术标签:

【中文标题】Java 说这个方法有一个构造函数名【英文标题】:Java says this method has a constructor name 【发布时间】:2011-07-06 23:49:17 【问题描述】:

我想返回我的数组的值加上递归调用的返回值。

但是出于某种原因,java 不希望在构造函数之后有方法名称。

此外,当我尝试将方法转换为另一种方法时,使用 isPalindrome 时出现错误。

我更改了我的程序,但仍然出现错误。


public class isPalindrome

    /**
     * This is the main entry point for the application
     * @return 
     */
    public static boolean main(String[] args) 
    

    String[] word = "KayaK", "Desserts, I stressed";



    boolean isPalindrome(String[] array, String s, String i)
    

        if(i.charAt(0) == s.charAt(0))
        
            System.out.println("You entered a Palindrome");
            return true;
        
        else
        
            System.out.println("You didn't entered a Palindrome");
        
    


        try 
        
            System.in.read();
         
        catch (Throwable t) 
        

        

【问题讨论】:

数组应该代表什么?在 main 中,您将 s 用于字符串数组,但 isPalindrome 似乎没有将字符串数组用于任何内容。 【参考方案1】:

您不能将类名用作方法的名称。唯一可以与类共享名称的“方法”是构造函数。

一种解决方法是将您的课程从isPalindrome 重命名为PalindromeFinder 或其他东西。这也将更好地符合 Java 命名约定。

编辑:请注意,您实际上从未在 main 中调用过您的方法;您尝试将局部变量分配给isPalindrome。那实际上并没有调用该方法。您需要使用isPalindrome(...put your parameters here...) 调用该方法,并将结果存储在一个名称未被使用的变量中。

还要注意,一个方法只能返回一个值(单个基元或单个对象)。如果你真的想返回一个数组和一个布尔值(我不确定你是否这样做),你必须将它们存储在一个对象中并返回该对象。

【讨论】:

+1 - 遵循 Java 命名约定将完全避免这个“问题”/ 我明白,但我将如何返回我的数组 return isPalindrome(array, s.substring(1, s.length()-1));是问题 这行得通吗? boolean isPalindrome = new boolean("true");布尔 b = isPalindrome.booleanValue(); 小写“boolean”是原始类型,而不是对象。因此,您不能尝试通过说“new boolean(...)”来调用构造函数,也不能尝试在它们上调用方法,例如“isPalindrome.booleanValue()”。【参考方案2】:

在java中你不能使用类名作为变量名。错误告诉你,只有类的构造函数方法可能与类同名,构造函数不能返回int(它不返回任何东西)。

【讨论】:

我明白,但我将如何返回我的数组【参考方案3】:

我建议将类重命名为 Palindrome 或 PalindromeHelper

【讨论】:

我明白,但我将如何返回我的数组 将返回类型设为boolean[] 而不是boolean 我猜,但我不确定该方法的参数。【参考方案4】:

但是我将如何返回我的数组

return isPalindrome(array, s.substring(1, s.length()-1)); 是问题所在。

    正如所写,实际上没有创建要返回的数组。提示:return new String[]...returnarray` 在哪里?

    没有任何东西修改array,所以返回它没有意义。

    您可以...如果有意义...修改作为参数传递的数组。

    如果你真的想从isPalindrome 返回一个数组,你不能*也返回truefalse。一个方法只能有一个声明的返回类型,而您的代码似乎“需要”两个;即String[]boolean。做不到。

* 好的,您可以...通过将返回类型声明为Object。但这会让调用者的生活变得很困难,而且是非常糟糕的设计。

【讨论】:

以上是关于Java 说这个方法有一个构造函数名的主要内容,如果未能解决你的问题,请参考以下文章

构造方法

JAVA中构造方法和普通方法的区别

Java 构造函数和函数重载

Java 构造函数 - 子类构造函数中的可选参数

Java内构造函数关键字权限修饰符访问控制及面向对象的特性!

Java 构造函数