-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

エラーメッセージは、何をすべきかを示しています。すべての Java メソッド/関数は、戻り値の型で宣言する必要があります。

この場合、文字列のように見えるため、次のようになります

public String Tutor()

何も返したくない場合は、

public void getMiau()
于 2013-03-19T15:23:38.540 に答える
1

あなたはTutor方法のように扱っています。本当にメソッドである場合Tutor、それに関連付けられた戻り値の型はありません。

また、firstNamelastName、およびdegreeLevel取得はクラス内で at 宣言されていますか? それ以外にも問題があるように思えます-覚えておいてください。

于 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

メソッドに戻り値の型を追加します。あなたが投稿したように、メソッドの戻り値の型を指定せずに String を返しています。そのため、メソッドの戻り値の型として String を追加します。

void として宣言されているメソッドから値を返そうとすると、コンパイラ エラーが発生します。

public String Tutor(String firstName, String lastName, String degreeLevel) {
  .....
   return(lastName +", "+ firstName +" "+ degreeLevel);
}
于 2013-03-19T15:22:25.350 に答える
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

Tutorがメソッドなのかコンストラクタなのかは明確ではありません。コンストラクターであると想定されている場合は、 という名前のクラスで宣言していますがCalculateATutor、これは機能しません。また、コンストラクターをコンストラクターとして記述していません (returnステートメントを含める必要はありません)。これはいくつかの方法で修正できます。

  1. クラス名を に変更しTutorます。
  2. コンストラクタ名を に変更しCalculateATutorます。
  3. コンストラクターをnamedTutorの内部クラスに移動します。CalculateATutorTutor
于 2013-03-19T15:28:26.180 に答える
0

あなたはそこで多くの間違いをしました:

最初: Tutor がメソッドの場合:

メソッドに戻り値の型を設定する必要があります。public static String Tutor(...) このようにして、メソッドは値を正しく返します。

2番目: Tutor がクラスの場合:

次に、クラスの名前を Tutor に変更するか、コンストラクタの名前を CalculateATutor に変更する必要があります。コンストラクターには戻り値の型がなく、return-Statement が含まれることはありません。したがって、この方法では、コンストラクターで return-Statement を削除する必要があります。

public CalculateATutor(String firstName, String lastName, String degreeLevel)
{
    this.firstName = firstName;
    this.lastName = lastName;
    this.degreeLevel = degreeLevel; 
} 

三番:

Class Tutor (クラスの場合) の使用法が間違っています

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 に答える
0

Tutor メソッドは文字列を返していますが、戻り値の型があると宣言していません。試す:

public String Tutor(String firstName, String lastName, String degreeLevel)
于 2013-03-19T15:24:58.637 に答える