#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:
Способ расчета цены сработает только один раз.
- Измените вызов на this .CalPrice() для сохранения возврата из функции.
-
Создайте Price в качестве своей глобальной переменной, чтобы сохранить обновленную цену
public void Recal(){ do{ this.GetDet(); this.SearchArr(); double Price = this.CalPrice(); this.TotalPrice(); }while(d==1); }
-
Измените функцию TotalPrice, чтобы обновить цену
-
Создайте переменную 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. Чтобы отметить ответ как принятый, нажмите на галочку рядом с ответом, чтобы переключить его с выделенного серым цветом на заполненный.