现在我把它设置为构造函数,但我不确定如何实际使用它。我希望能够存储名字,姓氏和学位等级。我需要它继续运行,直到我停止它并继续更多的程序。
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.*;
import java.util.ArrayList;
public class Tutor
{
String firstName;
String lastName;
String degreeLevel;
public Tutor(String firstName, String lastName, String degreeLevel)
{
this.firstName = firstName;
this.lastName = firstName;
this.degreeLevel = degreeLevel;
}
public static void main (String[] args)
{
String fName;
String lName;
String level;
String ans;
ArrayList<Tutor> listOfTutor = new ArrayList<Tutor>();
for (int i = 0; i<3; 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);
}
}
}
答案 0 :(得分:3)
您需要获取错误,因为Tutor()
函数返回一个值,但方法声明中没有给出返回类型。
如果希望函数返回String:
public String Tutor(String firstName, String lastName, String degreeLevel)
^^^^^^
目前代码中存在许多问题。我相信你要做的是让Tutor()成为一个构造函数。如果是这种情况,它的声明应该是:
public CalculateATutor(String firstName, String lastName, String degreeLevel)
因为CalculateATutor是该类的名称。它不应该返回任何东西。另外,这些行:
this.firstName = firstName;
this.lastName = lastName;
this.degreeLevel = degreeLevel;
不会按照您想要的方式运作。如果您尝试设置类字段,则需要先在类中声明字段。像这样:
public class CalculateATutor
{
String firstName;
String lastName;
String degreeLevel;
...
}
答案 1 :(得分:2)
public String Tutor(String firstName, String lastName, String degreeLevel)
^ missing
当你返回String
时return(lastName +", "+ firstName +" "+ degreeLevel);
相反,我们的答案试图理解编译器的错误消息:
error: invalid method declaration; return type required
^ function declaration is wrong
也说return type required
所以你忘了返回类型的功能。
函数名称为public Tutor()
答案 2 :(得分:1)
将返回类型添加到方法。正如您发布的那样,您返回String而不提供返回类型的方法。所以添加String作为返回类型的方法。
如果尝试从声明为void的方法返回一个值,则会出现编译错误。
public String Tutor(String firstName, String lastName, String degreeLevel) {
.....
return(lastName +", "+ firstName +" "+ degreeLevel);
}
答案 3 :(得分:1)
您将Tutor
视为一种方法。如果Tutor
确实是一种方法,则您没有与之关联的返回类型。
同样在课堂上宣布firstName
,lastName
和degreeLevel
的位置?在我看来,可能还有其他问题而不仅仅是 - 请记住。
答案 4 :(得分:1)
public Tutor(String firstName, String lastName, String degreeLevel)
应该是
public String Tutor(String firstName, String lastName, String degreeLevel)
答案 5 :(得分:1)
你的代码真的搞砸了。
你有一个名为CalculateATutor
的类,里面有一个类似于构造函数但名为Tutor
的类,你在main
函数中使用它作为常规类。
首先,您需要了解自己想要做什么(也许可以阅读classes和constructors)。
但是对于你的问题:
如果您想要一个名为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;
}
答案 6 :(得分:1)
错误消息告诉您该怎么做。必须使用返回类型声明所有Java方法/函数。
在这种情况下,它似乎是一个字符串,因此它变为
public String Tutor()
如果你不想让它返回任何东西那么它就是
public void getMiau()
答案 7 :(得分:0)
您的Tutor方法返回一个字符串,但您尚未将其声明为具有返回类型。尝试:
public String Tutor(String firstName, String lastName, String degreeLevel)
答案 8 :(得分:0)
目前尚不清楚Tutor
是否应该是方法或构造函数。如果它应该是一个构造函数,那么你将在一个名为CalculateATutor
的类中声明它,这将无效。您也没有将构造函数编写为构造函数(它不应该有return
语句)。您可以通过以下几种方式解决此问题:
Tutor
。CalculateATutor
。Tutor
构造函数移动到名为CalculateATutor
的{{1}}内部类。答案 9 :(得分:0)
1)你正在使用它。用于引用尚未定义的类变量的keywork 2)你似乎已经调用类CalculateATutor但是类Tutor的构造函数,它们应该是相同的,所以像这样:
import javax.swing。*;
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)
}
}
}
答案 10 :(得分:0)
你在那里犯了很多错误:
首先:如果Tutor是一个方法:
您必须将Return Type设置为Method。 public static String Tutor(...)
这样,您的方法可以正确返回您的值。
第二:如果导师应该是你的班级:
然后,您必须将您的课程重命名为Tutor,或将您的构造函数重命名为CalculateATutor。 构造函数从不具有返回类型,并且从不包含return-Statement。因此,您必须在构造函数中删除return-Statement。
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;
}
}
这样您就可以存储变量。