Java 为什么我的类给我一个错误的回报?
现在我将它设置为构造函数,但是我不确定如何实际使用它。我希望能够存储名字、姓氏和学位级别。我需要它继续运行,直到我停止它并继续更多的程序Java 为什么我的类给我一个错误的回报?,java,class,Java,Class,现在我将它设置为构造函数,但是我不确定如何实际使用它。我希望能够存储名字、姓氏和学位级别。我需要它继续运行,直到我停止它并继续更多的程序 import javax.swing.*; import java.util.ArrayList; public class Tutor { public Tutor(String firstName, String firstName, String degreeLevel) { firstName = firstName; la
import javax.swing.*;
import java.util.ArrayList;
public class Tutor
{
public Tutor(String firstName, String firstName, String degreeLevel)
{
firstName = firstName;
lastName = firstName;
degreeLevel = degreeLevel;
}
public static void main (String[] args)
{
String fName;
String lName;
String level;
String ans;
ArrayList<String> listOfTutor = new ArrayList<String>();
for (int i = 0; i<listOfTutor.size(); i++)
{
fName = JOptionPane.showInputDialog(null,"Enter Tutor's First Name: ");
lName = JOptionPane.showInputDialog(null,"Enter Tutor's Last Name: ");
level = JOptionPane.showInputDialog(null,"Enter Tutor's Highest Level of Degree: ");
Tutor t = new Tutor(fName,lName,level);
listOfTutor.add(t);
}
}
}
import javax.swing.*;
导入java.util.ArrayList;
公开课导师
{
公共导师(stringfirstname、stringfirstname、stringdegreelevel)
{
名字=名字;
lastName=firstName;
degreeLevel=degreeLevel;
}
公共静态void main(字符串[]args)
{
字符串fName;
字符串名称;
字符串级;
字符串ans;
ArrayList listOfTutor=新的ArrayList();
对于(inti=0;i将返回类型添加到方法。正如您发布的一样,您返回的是字符串,而没有给出方法的返回类型。因此,将字符串添加为方法的返回类型
如果试图从声明为void的方法返回值,则会出现编译器错误
public String Tutor(String firstName, String lastName, String degreeLevel) {
.....
return(lastName +", "+ firstName +" "+ degreeLevel);
}
您将Tutor
视为一种方法。如果Tutor
确实是一种方法,则没有与之关联的返回类型
另外,firstName
、lastName
和degreeLevel
在课堂上的声明在哪里?在我看来,可能还有其他问题——请记住
public Tutor(String firstName, String lastName, String degreeLevel)
应该是
public String Tutor(String firstName, String lastName, String degreeLevel)
您需要获取错误,因为Tutor()
函数正在返回一个值,但在方法声明中没有给出返回类型
如果希望函数返回字符串:
public String Tutor(String firstName, String lastName, String degreeLevel)
^^^^^^
实际上,目前代码中存在很多问题。我相信您要做的是将Tutor()设置为构造函数。如果是这样的话,它的声明应该是:
public CalculateATutor(String firstName, String lastName, String degreeLevel)
因为CalculateAutor是类的名称。它不应返回任何内容。此外,以下几行:
this.firstName = firstName;
this.lastName = lastName;
this.degreeLevel = degreeLevel;
将无法按您希望的方式工作。如果您试图设置类字段,则需要先声明类中的字段。如下所示:
public class CalculateATutor
{
String firstName;
String lastName;
String degreeLevel;
...
}
你的代码真是乱七八糟。
您有一个名为CalculateATutor
的类,其中有一个看起来像构造函数但名为Tutor
的类,您在main
函数中使用它作为常规类
首先,你需要了解你想做什么(也许还需要了解和)
但对于你的问题:
如果希望有一个名为Tutor的方法,则需要在方法签名中添加返回类型
public String Tutor(String firstName, String lastName, String degreeLevel)
{
this.firstName = firstName;
this.lastName = lastName;
this.degreeLevel = degreeLevel;
return(lastName +", "+ firstName +" "+ degreeLevel);
}
如果试图创建构造函数,则需要使用类名并删除return语句:
public CalculateATutor(String firstName, String lastName, String degreeLevel)
{
this.firstName = firstName;
this.lastName = lastName;
this.degreeLevel = degreeLevel;
}
当您返回字符串时
return(lastName +", "+ firstName +" "+ degreeLevel);
相反,我们的答案试图理解编译器的错误消息:
error: invalid method declaration; return type required
^ function declaration is wrong
还表示需要返回类型
,因此您忘记了函数的返回类型
其中函数名为
public Tutor()
时,错误消息会告诉您该怎么做。所有Java方法/函数都必须用返回类型声明
在本例中,它似乎是一个字符串,因此它变为
public String Tutor()
如果你不想让它归还任何东西,那么它就是
public void getMiau()
您的导师方法正在返回字符串,但您尚未将其声明为具有返回类型。请尝试:
public String Tutor(String firstName, String lastName, String degreeLevel)
尚不清楚
Tutor
应该是方法还是构造函数。如果它应该是构造函数,则在名为CalculateATutor
的类中声明它,该类不起作用。您也没有将构造函数作为构造函数编写(它不应该有return
语句)。您可以通过以下几种方式解决此问题:
Tutor
CalculateATutor
Tutor
构造函数移动到名为Tutor
的内部类CalculateATutor
public class Tutor //NOTE CORRECTED CLASS NAME
{
String firstName;
String lastName;
String degreeLevel
public Tutor(String firstName, String lastName, String degreeLevel)
{
this.firstName = firstName;
this.lastName = lastName;
this.degreeLevel = degreeLevel;
}
public static void main (String[] args)
{
String ans;
List<Tutor> Tutor = new ArrayList<>();
for (int i = 0; i<Tutor.size; i++) //Tutor.size==0, will never run, I can't correct as I have no idea what you want to happen
{
ans = JOptionPane.showInputDialog(null,"Enter Tutor's Last Name, First Name, and Highest Level of Degree:");
Tutor = ans; //I have no idea whats going on here but Tutor should be initialised like new Tutor(string,string,string)
}
}
}
public class Tutor//注意更正的类名
{
字符串名;
字符串lastName;
串级
公共导师(字符串名、字符串名、字符串级别)
{
this.firstName=firstName;
this.lastName=lastName;
this.degreeLevel=degreeLevel;
}
公共静态void main(字符串[]args)
{
字符串ans;
List Tutor=new ArrayList();
对于(int i=0;i您在那里犯了很多错误:
第一:如果导师是一种方法:
必须为方法设置返回类型。publicstaticstringtutor(…)
这样,您的方法将正确返回值
第二:如果导师应该是你的班级:
然后,您必须将类重命名为Tutor,或将构造函数重命名为CalculateATutor。
构造函数从来没有返回类型,也从来没有包含返回语句。因此,通过这种方式,您必须删除构造函数中的返回语句
public CalculateATutor(String firstName, String lastName, String degreeLevel)
{
this.firstName = firstName;
this.lastName = lastName;
this.degreeLevel = degreeLevel;
}
第三:
你的班主任(如果是班级)的用法是错误的
通过这种方式可以存储变量。您需要指定一个Returntype,在您的示例中,它应该是String。publicstaticstringtutor(…)
重命名您的类以匹配构造函数,并删除return
语句。您应该先学习Java编程的基本概念…它不应该是公共静态字符串Tutor
(因为主函数在同一个类中,并且在该类中调用了方法)@Loki是的,我实际上不太确定这里现在应该发生什么。看起来导师可能应该是一个构造函数。HmmBut然后还删除了“构造函数”中的返回语句@Loki-说得好!我更新了我的措辞来解释这一点。我得到了这个错误,我不确定这意味着什么:Tutor.java:28:error:add(Tutor)listoftor.add(t)找不到合适的方法;你的代码非常正确。唯一缺少的是
public class Tutor //NOTE CORRECTED CLASS NAME
{
String firstName;
String lastName;
String degreeLevel
public Tutor(String firstName, String lastName, String degreeLevel)
{
this.firstName = firstName;
this.lastName = lastName;
this.degreeLevel = degreeLevel;
}
public static void main (String[] args)
{
String ans;
List<Tutor> Tutor = new ArrayList<>();
for (int i = 0; i<Tutor.size; i++) //Tutor.size==0, will never run, I can't correct as I have no idea what you want to happen
{
ans = JOptionPane.showInputDialog(null,"Enter Tutor's Last Name, First Name, and Highest Level of Degree:");
Tutor = ans; //I have no idea whats going on here but Tutor should be initialised like new Tutor(string,string,string)
}
}
}
public CalculateATutor(String firstName, String lastName, String degreeLevel)
{
this.firstName = firstName;
this.lastName = lastName;
this.degreeLevel = degreeLevel;
}
String ans;
List<Tutor> myTutor = new ArrayList<Tutor>(); //You have to specify Tutor in your Template-Class
for (int i = 0; i<myTutor.size; i++)
{
ans = JOptionPane.showInputDialog(null,"Enter Tutor's Last Name, First Name, and Highest Level of Degree:");
//Here you have a lot to do because you get one inputstring with all 3 Elements
//You have to split the input or get 3 seperate inputs
// We assume you have your correct input here right now with Strings fname, lname, level
Tutor t = new Tutor(lname,fname,level);
myTutor.add(t);
}
}
public class TestClass{
String lastName;
public TestClass(String lastName){// this is the Constructor
this.lastName = lastName;
}
}