Как получить итоговое значение, когда пользователь попросит повторить программу?

#java #oop

#java #ооп

Вопрос:

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

 public class WomenDep extends Shop{
    int a,c,d,NoOfSizes=3,Counter;
    double b,Total;
    Prices P1 = new Prices();
    double []arr = new double[NoOfSizes];
    @Override
     public void GetDet(){
        System.out.println("Pls Select Product No., n(1)--> Tshirtn(2)--> Shortn(3)--> Jeansn"
                  "(4)--> Dressn(5)--> Skirts");
        a = input.nextInt();
        System.out.println("Pls Select required Size No., n(1)-->Sn(2)-->Mn(3)-->L");
        b = input.nextDouble();
        System.out.println("Enter Number of Pieces");
        c = input.nextInt();
        this.Pieces=c;
         System.out.println("Do you want to add another product to your cart?n(1)-->Yesn(2)-->No");
        d = input.nextInt();
    }

    @Override
     public double [] SearchArr(){
         if(this.a==1){
            this.ProductName = "Tshirt";
            for (int i = 0; i<NoOfSizes;   i)
                arr[i]=P1.WTshirt[i];
            }
         if(this.a==2){
            this.ProductName = "Short";
         for (int i = 0; i<NoOfSizes;   i)
                arr[i]=P1.WShort[i];
            }
         if(this.a==3){
            this.ProductName = "Jeans";
         for (int i = 0; i<NoOfSizes;   i)
                arr[i]=P1.WJeans[i];
            }
         if(this.a==4){
            this.ProductName = "Dress";
         for (int i = 0; i<NoOfSizes;   i)
                arr[i]=P1.WDress[i];
            }
         if(this.a==5){
            this.ProductName = "Skirts";
         for (int i = 0; i<NoOfSizes;   i)
                arr[i]=P1.WSkirts[i];
         }
          return arr;
     }

    @Override
     public double CalPrice(){
         if(b==1){
                Price = arr [0];}
         if(b==2){
                Price = arr [1];}
         else if(b==3){
                Price = arr [2];}
         return Price;
     }

    @Override
     public void TotalPrice(){
         TPrice =Price * Pieces;
         System.out.println("this is total Price " TPrice);
     }

    @Override
     public void Recal(){ 
            do{
            this.GetDet();
            this.SearchArr();
            this.CalPrice();
            this.TotalPrice();
            }while(d==1);
        }
     }
public class Prices extends Shop{
    public double [] WTshirt = {60.00,100.5,120};//S,M,L
    public double [] WShort = {50,110,130.5};//S,M,L
    public double [] WJeans = {150.99,180,200};//S,M,L
    public double [] WDress = {350,400,450.99};//S,M,L
    public double [] WSkirts = {350.5,499.99,450.5};//S,M,L
}
  public static void main(String[] args) {
     WomenDep a = new WomenDep();
     a.Recal();

    }
  

Я ожидаю, что он будет добавлять общее значение рассчитанной цены каждый раз, но он вычисляет только одно.

Комментарии:

1. Пожалуйста, учитывайте соглашения об именовании. В java camelCase довольно удобен. Существует верхний регистр для классов и нижний регистр для переменных. Константы обычно полностью записываются в ВЕРХНЕМ РЕГИСТРЕ. Нотация camelCase

Ответ №1:

Способ расчета цены сработает только один раз.

  1. Измените вызов на this .CalPrice() для сохранения возврата из функции.
  2. Создайте Price в качестве своей глобальной переменной, чтобы сохранить обновленную цену

     public void Recal(){ 
    do{
        this.GetDet();
        this.SearchArr();
        double Price = this.CalPrice();
        this.TotalPrice();
    }while(d==1);
    }
      
  3. Измените функцию TotalPrice, чтобы обновить цену

  4. Создайте переменную TPrice глобально, чтобы получить последнюю обновленную цену

     public void TotalPrice(){
     TPrice = TPrice   this.Price * Pieces;
    System.out.println("this is total Price " TPrice);
    }
      

Завершите код, я удалил часть с расширением класса, пожалуйста, посмотрите и проверьте, решена ли проблема.

 import java.util.Scanner;

public class WomenDep{
int a,c,d,NoOfSizes=3,Counter;
double b,Total;
Prices P1 = new Prices();
double []arr = new double[NoOfSizes];
private int Pieces;
double Price;
double TPrice;
Scanner input = new Scanner(System.in);
private String ProductName;

public void GetDet(){
    System.out.println("Pls Select Product No., n(1)--> Tshirtn(2)--> Shortn(3)--> Jeansn"
              "(4)--> Dressn(5)--> Skirts");
    a = input.nextInt();
    System.out.println("Pls Select required Size No., n(1)-->Sn(2)-->Mn(3)-->L");
    b = input.nextDouble();
    System.out.println("Enter Number of Pieces");
    c = input.nextInt();
    this.Pieces=c;
    System.out.println("Do you want to add another product to your cart?n(1)-->Yesn(2)-->No");
    d = input.nextInt();
}


public double [] SearchArr(){
    if(this.a==1){
        this.ProductName = "Tshirt";
        for (int i = 0; i<NoOfSizes;   i)
            arr[i]=P1.WTshirt[i];
    }
    if(this.a==2){
        this.ProductName = "Short";
        for (int i = 0; i<NoOfSizes;   i)
            arr[i]=P1.WShort[i];
    }
    if(this.a==3){
        this.ProductName = "Jeans";
        for (int i = 0; i<NoOfSizes;   i)
            arr[i]=P1.WJeans[i];
    }
    if(this.a==4){
        this.ProductName = "Dress";
        for (int i = 0; i<NoOfSizes;   i)
            arr[i]=P1.WDress[i];
    }
    if(this.a==5){
        this.ProductName = "Skirts";
        for (int i = 0; i<NoOfSizes;   i)
            arr[i]=P1.WSkirts[i];
    }
    return arr;
}


public double CalPrice(){

    if(b==1){
        Price = arr [0];}
    if(b==2){
        Price = arr [1];}
    else if(b==3){
        Price = arr [2];}
    return Price;
}


public void TotalPrice(){
     TPrice = TPrice   this.Price * Pieces;
    System.out.println("this is total Price " TPrice);
}


public void Recal(){ 
    do{
        this.GetDet();
        this.SearchArr();
        double Price = this.CalPrice();
        this.TotalPrice();
    }while(d==1);
}
 class Prices{
    public double [] WTshirt = {60.00,100.5,120};//S,M,L
    public double [] WShort = {50,110,130.5};//S,M,L
    public double [] WJeans = {150.99,180,200};//S,M,L
    public double [] WDress = {350,400,450.99};//S,M,L
    public double [] WSkirts = {350.5,499.99,450.5};//S,M,L
}


public static void main(String[] args) {
WomenDep a = new WomenDep();
a.Recal();

}
}
  

Комментарии:

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