为什么我的班级给我一个错误的回报?

时间:2013-03-19 15:21:08

标签: java class

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

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

11 个答案:

答案 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确实是一种方法,则您没有与之关联的返回类型。

同样在课堂上宣布firstNamelastNamedegreeLevel的位置?在我看来,可能还有其他问题而不仅仅是 - 请记住。

答案 4 :(得分:1)

public Tutor(String firstName, String lastName, String degreeLevel)

应该是

public String Tutor(String firstName, String lastName, String degreeLevel)

答案 5 :(得分:1)

你的代码真的搞砸了。 你有一个名为CalculateATutor的类,里面有一个类似于构造函数但名为Tutor的类,你在main函数中使用它作为常规类。

首先,您需要了解自己想要做什么(也许可以阅读classesconstructors)。

但是对于你的问题:

如果您想要一个名为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语句)。您可以通过以下几种方式解决此问题:

  1. 将班级名称更改为Tutor
  2. 将构造函数名称更改为CalculateATutor
  3. 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;
    }

}

这样您就可以存储变量。