Как хранить данные в каждом случае do-while l oop в Java? - PullRequest
0 голосов
/ 11 февраля 2020

В настоящее время я изучаю Java, и мне нужно добавить значения каждого экземпляра в моем задании l oop. Есть ли способ сохранить значения, чтобы они не перезаписывались каждые l oop?

import java.util.Scanner;   

class Main{
    public static void main(String[] args){
    Scanner input = new Scanner(System.in);

    char userChar;

    do {

        System.out.println("Apples are $10");
        System.out.println("How many do you want?");
        int itemQty = input.nextInt();

        System.out.println("Do you wish to buy more? (y/n)");
        userChar = input.next()charAt(0);

    } while (userChar == 'y');

    // all values entered by the user needs to be added 
    System.out.println("The total is: $" + (itemQty*10)); 

}

}

Ответы [ 3 ]

1 голос
/ 11 февраля 2020

Вы можете определить переменную для totalSum за пределами l oop, а затем каждый раз, когда пользователь вводит число, добавлять к нему itemQty.

int totalSum = 0;
do {
    ...
    int itemQty = input.nextInt();
    totalSum += itemQty;
    ...
} while (...);
// Here totalSum is the sum of all user inputs
0 голосов
/ 11 февраля 2020
public class Main {

     public static void main(String[] args){
    Scanner input = new Scanner(System.in);

    char userChar;

        int itemQty=0;
        int totalQty=0;
    do {

        System.out.println("Apples are $10");
        System.out.println("How many do you want?");

        itemQty = input.nextInt();
        totalQty+=itemQty;
        System.out.println("Do you wish to buy more? (y/n)");
        userChar = input.next()charAt(0);

    } while (userChar == 'y');

    // all values entered by the user needs to be added 
    System.out.println("The total is: $" + (itemQty*10)); 
}
}

По предложению Lino, оставьте itemQty вне l oop и инициализируйте его нулем.

Вы также хотите сохранить значение itemQty для каждой итерации l oop?

Если да, используйте ArrayList.

ArrayList<int> valuesList = new ArrayList<int>();

и измените свой код l oop на

int itemQty=0;
int totalQty=0;
do {

    System.out.println("Apples are $10");
    System.out.println("How many do you want?");
    itemQty = input.nextInt();
    valuesList.add(itemQty*10);//New line to be added
    totalQty += itemQty;
    System.out.println("Do you wish to buy more? (y/n)");
    userChar = input.next().charAt(0);

} while (userChar == 'y');

А затем, после окончания l oop, отобразите значения на каждом этапе.

for (int i = 0; i < valuesList.size(); i++) {            
      System.out.println("The value of Qty in stage "+(i+1)+" is $"+valuesList.get(i));       
  } 

И это будет ваш окончательный результат

Яблоки по 10 долларов. Сколько вы хотите? 10 Будете ли вы sh покупать больше? (да / нет) y Яблоки стоят $ 10

Сколько вы хотите?

5

Вы хотите sh, чтобы купить больше? (да / нет)

n

Итого: $ 150

Значение Qty на этапе 1 составляет $ 100

Значение Qty на этапе 2 составляет $ 50

0 голосов
/ 11 февраля 2020

вы можете обновить вашу программу, как показано ниже -

public static void main(String[] args) {


    Scanner input = new Scanner(System.in);

    char userChar;
    int itemQty = 0;

    do {

        System.out.println("Apples are $10");
        System.out.println("How many do you want?");

        itemQty += input.nextInt();


        System.out.println("Do you wish to buy more? (y/n)");
        userChar = input.next().charAt(0);

    } while (userChar == 'y');

    // all values entered by the user needs to be added
    System.out.println("The total is: $" + (itemQty*10));

}
...