2014-12-23 2 views
-1

У меня эти два файла на Java, и мой учитель говорит, что они работают нормально, но мне нужно уменьшить количество частных экземпляров в моем коде. Как вам поступить по поводу этого?Именование переменных частных экземпляров

public class CarV7 { 

    private String myCarType1, myCarType2, myCarType3; 
    private int mySmiles1, mySmiles2, mySmiles3; 
    private int myEmiles1, myEmiles2, myEmiles3; 
    private double myGals1, myGals2, myGals3; 
    private double myPricePerGallon1, myPricePerGallon2, myPricePerGallon3; 

    CarV7(String carType, int eMiles, int sMiles, double gals, double pricePerGallon) { 
     myCarType1 = carType; 
     myCarType2 = carType; 
     myCarType3 = carType; 
     mySmiles1 = sMiles; 
     mySmiles2 = sMiles; 
     mySmiles3 = sMiles; 
     myEmiles1 = eMiles; 
     myEmiles2 = eMiles; 
     myEmiles3 = eMiles; 
     myGals1 = gals; 
     myGals2 = gals; 
     myGals3 = gals; 
     myPricePerGallon1 = pricePerGallon; 
     myPricePerGallon2 = pricePerGallon; 
     myPricePerGallon3 = pricePerGallon; 
    } 

    public int calcDistance(int myEmiles, int sMiles) { 
     return myEmiles - sMiles; 
    } 

    public double calcMPG(int distance, double gals) { 
     return distance/gals; 
    } 

    public double calcGPM(double myGals, int distance) { 
     return myGals/distance; 
    } 

    public double totalCost(double pricePerGallon, double gals) { 
     return gals * pricePerGallon; 
    } 
} 
public class CarV7Tester { 

    public static void main(String[] args) { 

     String carType1, carType2, carType3; 
     int sMiles1, sMiles2, sMiles3; 
     int eMiles1, eMiles2, eMiles3; 
     double gals1, gals2, gals3; 
     double pricePerGallon1, pricePerGallon2, pricePerGallon3; 
     int distance1, distance2, distance3; 
     double cost1, cost2, cost3; 
     double mpg1, mpg2, mpg3; 
     double gpm1, gpm2, gpm3; 

     carType1 = "06 Saturn View"; 
     carType2 = "03 Toyota Camr"; 
     carType3 = "10 Nissan Leaf"; 
     sMiles1 = 5678; 
     sMiles2 = 5678; 
     sMiles3 = 5678; 
     eMiles1 = 6015; 
     eMiles2 = 6015; 
     eMiles3 = 6015; 
     gals1 = 15.8; 
     gals2 = 17.6; 
     gals3 = 14.9; 
     pricePerGallon1 = 2.67; 
     pricePerGallon2 = 2.8; 
     pricePerGallon3 = 2.58; 

     CarV7 car1 = new CarV7(carType1, eMiles1, sMiles1, gals1, pricePerGallon1); 
     CarV7 car2 = new CarV7(carType2, eMiles2, sMiles2, gals2, pricePerGallon2); 
     CarV7 car3 = new CarV7(carType3, eMiles3, sMiles3, gals3, pricePerGallon3); 

     distance1 = car1.calcDistance(eMiles1, sMiles1); 
     distance2 = car2.calcDistance(eMiles2, sMiles2); 
     distance3 = car3.calcDistance(eMiles3, sMiles3); 

     cost1 = car1.totalCost(pricePerGallon1, gals1); 
     cost2 = car2.totalCost(pricePerGallon2, gals2); 
     cost3 = car3.totalCost(pricePerGallon3, gals3); 

     mpg1 = car1.calcMPG(distance1, gals1); 
     mpg2 = car2.calcMPG(distance2, gals2); 
     mpg3 = car3.calcMPG(distance3, gals3); 

     gpm1 = car1.calcGPM(gals1, distance1); 
     gpm2 = car2.calcGPM(gals2, distance2); 
     gpm3 = car3.calcGPM(gals3, distance3); 

     System.out.printf("%40s", "Gas Mileage Calculations"); 
     System.out.println(); 
     System.out.printf("%-13s %12s %10s %10s %10s %8s %6s %10s %10s", "Type of Car", "Start Miles", "End  Miles", "Distance", "Gallons", "Price", "Cost", "Miles/Gal", "Gal/Mile"); 
     System.out.println(); 
     System.out.println("================================================================================================="); 
     System.out.printf("%-14s %9d %10d %10d %9.1f %8.1f %8.1f %10.3f %9.3f\n", carType1, sMiles1, eMiles1, distance1, gals1, pricePerGallon1, cost1, mpg1, gpm1); 
     System.out.printf("%-14s %9d %10d %10d %9.1f %8.1f %8.1f %10.3f %9.3f\n", carType2, sMiles2, eMiles2, distance2, gals2, pricePerGallon2, cost2, mpg2, gpm2); 
     System.out.printf("%-14s %9d %10d %10d %9.1f %8.1f %8.1f %10.3f %9.3f\n", carType3, sMiles3, eMiles3, distance3, gals3, pricePerGallon3, cost3, mpg3, gpm3); 
    } 
} 
+1

https://en.wikipedia.org/wiki/Array_data_type – khelwood

+0

почему вы хотите, чтобы в первую очередь? Вы знаете, что, почему эти переменные частные? – nobalG

+2

Почему каждый автомобиль имеет три из каждой переменной? Похоже, вы неправильно поняли механику объектной ориентации. – khelwood

ответ

0

Изменить объявление частных переменных экземпляра этого:

private String myCarType1; 
private int mySmiles1; 
private int myEmiles1; 
private double myGals1; 
private double myPricePerGallon1; 

... потому что другие переменные не используются, вообще.

Затем измените конструктор следующим образом:

CarV7 (String carType, int eMiles, int sMiles, double gals, double pricePerGallon) 
{ 
    myCarType1 = carType; 
    mySmiles1 = sMiles; 
    myEmiles1 = eMiles; 
    myGals1 = gals; 
    myPricePerGallon1 = pricePerGallon; 
} 

Не изменяйте имена локальных переменных внутри вашего основного метода.

Finally run the code... it should work. 
+0

Если мой ответ будет wothy, пожалуйста, примите его, нажав на галочку рядом с моим ответом. – rert588

+0

Спасибо. Однако мне нужно использовать остальные переменные. – apsstudent

+0

Как использовать остальные переменные – rert588

0

Если вы посмотрите на файл CarV7, у вас есть большое количество переменных экземпляра, которые вы не используете в классе. Похоже, вы не используете ничего, что вы установили в конструкторе.

+0

Мне нужен только один, но как бы назначить их остальным переменным? – apsstudent

+0

Когда вы создаете «новый CarV7», он создает отдельный экземпляр объекта «CarV7», каждый со своей собственной копией ваших личных переменных. Поэтому вам нужен только один из каждого типа переменной в объекте. Кроме того, если присмотреться, когда вы устанавливаете значение 'myCarType1' в конструкторе, вы никогда не будете использовать его снова. – Matt

+0

'CarV7 car1 = новый CarV7 (carType1, eMiles1, sMiles1, gals1, pricePerGallon1);' Этот объект будет иметь myCarType равный 06 Сатурн Вид 'CarV7 car2 = новый CarV7 (carType2, eMiles2, sMiles2, gals2 , pricePerGallon2); ' У этого будет myCarType of 03 Toyota Camr – Matt

0

Зачем вам нужны переменные экземпляра? Кажется, что ни один из ваших методов-членов не использует переменные экземпляра. Следовательно, методы могут быть определены как статические вместо этого, и вам даже не нужно создавать экземпляр класса в первую очередь.

+0

У вас есть точка, но методы программирования не использовались таким образом, чтобы эффективно использовать переменные экземпляра в коде, вопрос должен отвечать на вопрос о том, как код может включать переменные экземпляра и использовать их, а также отвечать на вопрос спрашивается. – rert588

0

Я дал вашему классу CarV7 некоторые переменные экземпляра. Поскольку переменные устанавливаются в конструкторе, методы не нуждаются ни в каких параметрах.

package com.ggl.car; 

public class CarV7 { 

    private int eMiles; 
    private int sMiles; 

    private double gallons; 
    private double pricePerGallon; 

    private String carType; 

    public CarV7(String carType, int sMiles, int eMiles, 
      double gallons, double pricePerGallon) { 
     this.carType = carType; 
     this.sMiles = sMiles; 
     this.eMiles = eMiles; 
     this.gallons = gallons; 
     this.pricePerGallon = pricePerGallon; 
    } 

    public int calcDistance() { 
     return eMiles - sMiles; 
    } 

    public double calcMPG() { 
     return (double) calcDistance()/gallons; 
    } 

    public double calcGPM() { 
     return gallons/calcDistance(); 
    } 

    public double totalCost() { 
     return gallons * pricePerGallon; 
    } 

    public int geteMiles() { 
     return eMiles; 
    } 

    public int getsMiles() { 
     return sMiles; 
    } 

    public double getGallons() { 
     return gallons; 
    } 

    public double getPricePerGallon() { 
     return pricePerGallon; 
    } 

    public String getCarType() { 
     return carType; 
    } 

} 

Я не сильно изменил ваш класс тестера. Я избавился от типов переменных в начале основного метода и задал тип переменной, поскольку я использовал каждую переменную.

package com.ggl.car; 

public class CarV7Tester { 

    public static void main(String[] args) { 

     String carType1 = "06 Saturn View"; 
     String carType2 = "03 Toyota Camr"; 
     String carType3 = "10 Nissan Leaf"; 
     int sMiles1 = 5678; 
     int sMiles2 = 5678; 
     int sMiles3 = 5678; 
     int eMiles1 = 6015; 
     int eMiles2 = 6015; 
     int eMiles3 = 6015; 
     double gals1 = 15.8; 
     double gals2 = 17.6; 
     double gals3 = 14.9; 
     double pricePerGallon1 = 2.67; 
     double pricePerGallon2 = 2.8; 
     double pricePerGallon3 = 2.58; 

     CarV7 car1 = new CarV7(carType1, sMiles1, eMiles1, gals1, pricePerGallon1); 
     CarV7 car2 = new CarV7(carType2, sMiles2, eMiles2, gals2, pricePerGallon2); 
     CarV7 car3 = new CarV7(carType3, sMiles3, eMiles3, gals3, pricePerGallon3); 

     int distance1 = car1.calcDistance(); 
     int distance2 = car2.calcDistance(); 
     int distance3 = car3.calcDistance(); 

     double cost1 = car1.totalCost(); 
     double cost2 = car2.totalCost(); 
     double cost3 = car3.totalCost(); 

     double mpg1 = car1.calcMPG(); 
     double mpg2 = car2.calcMPG(); 
     double mpg3 = car3.calcMPG(); 

     double gpm1 = car1.calcGPM(); 
     double gpm2 = car2.calcGPM(); 
     double gpm3 = car3.calcGPM(); 

     System.out.printf("%40s", "Gas Mileage Calculations"); 
     System.out.println(); 
     System.out.printf("%-13s %12s %10s %10s %10s %8s %6s %10s %10s", "Type of Car", "Start Miles", "End  Miles", "Distance", "Gallons", "Price", "Cost", "Miles/Gal", "Gal/Mile"); 
     System.out.println(); 
     System.out.println("================================================================================================="); 
     System.out.printf("%-14s %9d %10d %10d %9.1f %8.2f %8.2f %10.3f %9.3f\n", car1.getCarType(), sMiles1, eMiles1, distance1, gals1, pricePerGallon1, cost1, mpg1, gpm1); 
     System.out.printf("%-14s %9d %10d %10d %9.1f %8.2f %8.2f %10.3f %9.3f\n", car2.getCarType(), sMiles2, eMiles2, distance2, gals2, pricePerGallon2, cost2, mpg2, gpm2); 
     System.out.printf("%-14s %9d %10d %10d %9.1f %8.2f %8.2f %10.3f %9.3f\n", car3.getCarType(), sMiles3, eMiles3, distance3, gals3, pricePerGallon3, cost3, mpg3, gpm3); 
    } 
} 
Смежные вопросы