簡體   English   中英

如何從Java中其他類的構造函數訪問變量?

[英]How to access a variable from a constructor of a different class in java?

所以我有3個類,我想從兩個類中訪問一個變量,以將它們匯總到第三個中。 這是代碼:

import java.util.*;

public class Car{
    String tip,marka;
    public double sborMestaCar = 0;
    double mesta, skorost;


public Car(String tip, String marka, double mesta, double skorost){
    Scanner sc = new Scanner(System.in);

    System.out.println("Vavedete tiput na kolata.");
    tip = sc.nextLine();

    System.out.println("Vavedete markata.");
    marka = sc.nextLine();

    System.out.println("Vavedete mestata.");
    mesta = sc.nextDouble();

    System.out.println("Vavedete max. skorostta.");
    skorost = sc.nextDouble();

    System.out.println("Suzdadenata kola e ot tip " + tip + ", markata e " + marka + ", ima " + mesta + " mesta i maksimalnata i skorost e " + skorost);

    sborMestaCar = sborMestaCar + mesta;
}
public Car(double sborMesta){
    sborMestaCar = sborMesta;

}

}

第二個

import java.util.*;

public class Plane {
    String tip,marka;
    double mesta1k, mesta2k, skorost;
    public int sborMestaSam = 0;


public Plane( String tip, String marka, double mesta1k, double mesta2k, double skorost ){
    Scanner sc = new Scanner(System.in);


    System.out.println("Vavedete tiput na samoleta.");
    tip = sc.nextLine();

    System.out.println("Vavedete markata na samoleta.");
    marka = sc.nextLine();

    System.out.println("Vavedete mestata za purva klasa.");
    mesta1k = sc.nextDouble();

    System.out.println("Vavedete mestata za vtora klasa.");
    mesta2k = sc.nextDouble();

    System.out.println("Vavedete max. skorostta.");
    skorost = sc.nextDouble();

    System.out.println("Suzdadeniqt samolet e ot tip " + tip + ", markata e " + marka + ", ima " + mesta1k + " mesta v purva klasa, " + mesta2k +" mesta vuv vtora klasa" + " i maksimalnata i skorost e " + skorost);
}
    public Plane(double sborMesta){
        sborMestaSam = sborMesta;

}

}

還有第三個

import java.util.*;

public class TestPlane {
    public static void main(String[] args){

        String marka = "", tip = "";
        int mesta = 0, mesta1k = 0, mesta2k = 0, skorost = 0;
        int b = 1, c = 1;
        double sborMestaK = 0, sborMestaS = 0, obshtSbor = 0;



        Scanner sc = new Scanner(System.in);

        while(b == 1){
            Car car = new Car(tip, marka, mesta, skorost);
            System.out.println("Iskate li da suzdadete druga kola? 1 = Da 0 = Ne");
            b = sc.nextInt();
        }

        System.out.println("Vie zavurshihte suzdavaneto na kolite. Preminavane kum suzdavane na samoleti...");

        while(c == 1){  
            Plane plane = new Plane(tip, marka, mesta1k, mesta2k, skorost);
            System.out.println("Iskate li da suzdadete drug samolet? 1 = Da 0 = Ne");
            c = sc.nextInt();
        //  sborMesta = 
        }
        Car obshtiMestaK = new Car(sborMestaK);
        Plane obshtiMestaS = new Plane(sborMestaS);
        obshtSbor = obshtiMestaK.sborMestaCar + obshtiMestaS.sborMestaSam;
        System.out.println("Sbora ot mestata na vsi4ki sazdadeni prevozni sredstva e raven na " + obshtSbor);
    }

    }

您可以在System.out.println部分的末尾查看第三類,您可以看到我有obshtSbor-該變量由obshtiMestaK.sborMestaCar + obshtiMestaS.sborMestaSam組成。 該程序的工作原理是BUT返回0作為obshtSbor的值。

因此,首先您使用的分配錯誤,試圖將Car和Plane的參數值更改為該字段的值。 應該是sborMestaCar = sborMesta和sborMestaSam = sborMesta。

其次,您將0用作Car和Plane構造函數的參數double sborMestaK = 0, sborMestaS = 0, obshtSbor = 0; 所以0 + 0 = 0。 您期望看到什么?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM