[英]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.