-1

现在我将它设置为构造函数,但是我不确定如何实际使用它。我希望能够存储名字、姓氏和学位级别。我需要它继续运行,直到我停止它并继续执行更多程序。

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);
        }
    }   
}
4

11 回答 11

3

您需要获取错误,因为该Tutor()函数正在返回一个值,但方法声明中没有给出返回类型。

如果你希望你的函数返回一个字符串:

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; 
    ...
}   
于 2013-03-19T15:22:37.577 回答
2
public String Tutor(String firstName, String lastName, String degreeLevel)
       ^ missing 

当您返回字符串时

return(lastName +", "+ firstName +" "+ degreeLevel);  

相反,我们的答案试图理解编译器的错误信息:

 error: invalid method declaration; return type required
                      ^ function declaration is wrong     

还说return type required 所以你忘记了函数的返回类型。

函数名称在哪里 public Tutor()

于 2013-03-19T15:23:21.080 回答
1

将返回类型添加到方法。正如您发布的那样,您正在返回 String 而不给出方法的返回类型。所以添加 String 作为方法的返回类型。

如果您尝试从声明为 void 的方法返回值,则会收到编译器错误。

public String Tutor(String firstName, String lastName, String degreeLevel) {
  .....
   return(lastName +", "+ firstName +" "+ degreeLevel);
}
于 2013-03-19T15:22:25.350 回答
1

你就像对待Tutor一种方法一样对待。如果Tutor确实是一种方法,则您没有与之关联的返回类型。

还有firstName, lastName, 和degreeLevel在课堂上的声明在哪里?在我看来,可能还有其他问题——请记住。

于 2013-03-19T15:22:32.897 回答
1
public Tutor(String firstName, String lastName, String degreeLevel)

应该

public String Tutor(String firstName, String lastName, String degreeLevel)
于 2013-03-19T15:22:35.890 回答
1

你的代码真的很乱。您有一个名为 的类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; 
    } 
于 2013-03-19T15:22:41.913 回答
1

错误消息告诉您该怎么做。所有 Java 方法/函数都必须用返回类型声明。

在这种情况下,它似乎是一个字符串,所以它变成

public String Tutor()

如果你不希望它返回任何东西,那么它就是

public void getMiau()
于 2013-03-19T15:23:38.540 回答
0

您的 Tutor 方法正在返回一个字符串,但您尚未将其声明为具有返回类型。尝试:

public String Tutor(String firstName, String lastName, String degreeLevel)
于 2013-03-19T15:24:58.637 回答
0

目前尚不清楚Tutor应该是方法还是构造函数。如果它应该是一个构造函数,那么你在一个名为 的类中声明它CalculateATutor,这是行不通的。您也没有将构造函数编写为构造函数(它不应该有return语句)。您可以通过多种方式解决此问题:

  1. 将类名更改为Tutor.
  2. 将构造函数名称更改为CalculateATutor.
  3. 将构造函数移动到namedTutor的内部类。CalculateATutorTutor
于 2013-03-19T15:28:26.180 回答
0

1)你正在使用这个。引用您尚未定义的类变量的关键 2)您似乎调用了类 CalculateATutor 但类 Tutor 的构造函数,它们应该是相同的,所以是这样的:

导入 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)

        }
    }   
}
于 2013-03-19T15:32:51.633 回答
0

你在那里犯了很多错误:

第一:如果导师是一种方法:

您必须为您的方法设置一个返回类型。public static String Tutor(...) 这样,您的方法将正确返回您的值。

第二:如果导师应该是你的班级:

然后,您必须将您的类重命名为 Tutor 或将您的构造函数重命名为 CalculateATutor。构造函数永远不会有返回类型,也永远不会包含返回语句。所以这样你必须在你的构造函数中删除你的返回语句。

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;
    }

}

这样您就可以存储变量。

于 2013-03-19T15:37:43.420 回答