1

私はすでにウェブサイトで与えられた様々な提案を試みました。しかし正直なところ私はそれを修正するために何かを見つけることができませんでした。

基本的に、Acceptで作成された変数を使用しようとすると、他の関数では使用できません。これを修正する簡単な解決策はありますか?(メインコードを変更せずに)

import java.util.Scanner;
class x4Salary
    {
        Scanner input = new Scanner(System.in);
        public void accept()
        {
            System.out.println("Please input the name of the teacher");
            String name = input.next();
            System.out.println("Please input the address ");
            String adress = input.next();
            System.out.println("Please input the phone number");
            long num = input.nextLong();
            System.out.println("Please input the subject specialization");
            String subjectSpecialization = input.next();
            String subS = subjectSpecialization;
            System.out.println("Please input the Monthly Salary");
            long sal = input.nextLong();
            if(sal>175000)
            {
                tax();
            }
            display();
            double tax = 0.0;
        }
        public void tax()
        {
            System.out.println("Your current salary is : " + sal);
            tax = sal + ((5/sal)*100);
            System.out.println("The salary + Tax : " +tax);
            display();
        }
        public void display()
            {
                System.out.println("The name of the teacher : " + name);
                System.out.println("The Address of the teacher :" +adress);
                System.out.println("The Phone number of the Teacher: "+num);
                System.out.println("The Subject Specialization of the Teacher" + subS);
                System.out.println("The Monthly salary of the teacher" +sal + tax);
            }
        }
4

5 に答える 5

3

これらの変数をクラスメンバーとして作成できます

class x4Salary
{
    protected String name, address; //and so on

次に、String name = input.next();の代わりに

 name = input.next();

名前はX4Salaryのすべてのメソッドで表示されます

于 2012-11-12T11:06:03.493 に答える
1

これらの変数を変数として作成する必要がありinstanceます。

メソッド内で作成された変数は、そのメソッドスコープのみに限定されます。そのメソッドの外では表示されません。メソッドが呼び出されたときに作成され、メソッドの実行が終了すると、その変数はの対象になりますGarbage Collection

これは、お持ちのすべてのブロックスコープに当てはまります。1つのブロックで作成された変数は、そのブロックの外側には表示されません。

例:-

{   // A block
    int num = 10;
}

System.out.println(num);  // Error. num not visible here.

したがって、すべてのメソッドで変数にアクセスするには、次のように宣言します。-

public class Demo {
    private int num;  // Instance variable declaration. Outside every method.

    public void setNum(int num) { 
        this.num = num; 
    }

    public int getNum() { 
        return this.num;  
    }
}

したがって、ご覧のとおり、変数numは両方のメソッドで使用されます:-setNumgetNum


このチュートリアルに移動して、、、およびを開始しclassesますobjectsmember declarations-

于 2012-11-12T11:04:46.343 に答える
1

そのメソッドの外部でローカル変数(メソッド内で定義された変数)を使用することはできません。それらはその方法に限定されています。他のメソッドが使用できるように、インスタンス変数にするか、その変数を返す必要があります。あなたの場合。saloutsideメソッドを使用する場合はを受け入れます。インスタンス変数にします。

Class classname {
public long sal;

public void accept(){
//can access sal here
 sal = input.nextLong();
} 

public void display(){
//cvan access sal here
}
}
于 2012-11-12T11:05:00.627 に答える
1

これらの変数は、メソッドのみにスコープされます。入力した値を保持する場合のオプションは次のとおりです。

  1. 含まれているクラスにメンバー変数を作成し、それらにデータを入力します。これらの値は、そのクラスの存続期間中利用できます
  2. メソッドから値を返します。複数の値があるため、これらの値を含むオブジェクトを返す必要がある可能性があります
  3. そのメソッド内から別のオブジェクトを呼び出し、その方法でデータを渡します。

オプション2の場合、次のように戻りオブジェクトを定義できます。

class Teacher {
    private String name;
    private String phone;

    // add appropriate constructor
}

Teacherアプリケーションの重要なオブジェクトであると思われるので、Teacherクラス自体にメソッドを追加することをお勧めしますdisplay()OOはオブジェクトを作成し、それらにオブジェクトを実行させることであり、個別の関連変数を自分で処理することではないことを忘れないでください

于 2012-11-12T11:07:10.713 に答える
1

変数をクラスのメンバー変数として定義すると、すべてのメンバーメソッドでアクセスできるようになります。

import java.util.Scanner;
class x4Salary
    {
        private double tax=0.0;
        private string name, adress, subS;
        private long num, sal;
        Scanner input = new Scanner(System.in);
        public void accept()
        {
            System.out.println("Please input the name of the teacher");
            name = input.next();
            System.out.println("Please input the address ");
            adress = input.next();
            System.out.println("Please input the phone number");
            num = input.nextLong();
            System.out.println("Please input the subject specialization");
            subS = input.next();
            System.out.println("Please input the Monthly Salary");
            sal = input.nextLong();
            if(sal>175000)
            {
                tax();
            }
            display();
        }
        public void tax()
        {
            System.out.println("Your current salary is : " + sal);
            tax = sal + ((5/sal)*100);
            System.out.println("The salary + Tax : " +tax);
            display();
        }
        public void display()
        {
             System.out.println("The name of the teacher : " + name);
             System.out.println("The Address of the teacher :" +adress);
             System.out.println("The Phone number of the Teacher: "+num);
             System.out.println("The Subject Specialization of the Teacher" + subS);
             System.out.println("The Monthly salary of the teacher" +sal + tax);
        }
  }
于 2012-11-12T11:16:47.143 に答える