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[]...
或 return
array` 在哪里?
没有任何东西修改array
,所以返回它没有意义。
您可以...如果有意义...修改作为参数传递的数组。
如果你真的想从isPalindrome
返回一个数组,你不能*也返回true
和false
。一个方法只能有一个声明的返回类型,而您的代码似乎“需要”两个;即String[]
和boolean
。做不到。
* 好的,您可以...通过将返回类型声明为Object
。但这会让调用者的生活变得很困难,而且是非常糟糕的设计。
【讨论】:
以上是关于Java 说这个方法有一个构造函数名的主要内容,如果未能解决你的问题,请参考以下文章