Как мне сохранить выбранные значения после ввода пользователем? Цель состоит в том, чтобы распечатать array2 как квитанцию со всеми выбранными обработками, когда пользователь закончит

#java #arrays #loops #for-loop #if-statement

#java #массивы #циклы #для цикла #if-statement

Вопрос:

 String[][] array = {{"Checkup", "60"},
                    {"Repairing tooth", "150"},  
                    {"Cleaning", "30"}};  // Menu of treatments

String[] array2 = new String [10];  // New array that saves up to 10 elements(treatments)

int cost = 0;  
int treatment = 0;

Scanner input = new Scanner(System.in);

System.out.println("Control"   " "   "1");
System.out.println("Repair tooth:"   " "   "2");
System.out.println("Cleaning:"   " "   "3");

int n = array.length;
for (int i=0; i<n; i  ) {
    for (int j=0; i<n ; j  ) {
        System.out.println();
        treatment = input.nextInt();
        if (treatment==1) {
            cost  = Integer.parseInt(array[i][1]);
            System.out.print("Total cost so far: "   cost);
        }
        if (treatment==2) {
            cost  = Integer.parseInt(array[i 1][1]);
            System.out.print("Total cost so far: "   cost);
        }
        if (treatment==3) {
            cost  = Integer.parseInt(array[i 2][1]);
            System.out.print("Total cost so far: "   cost);
        }
    }
}
  

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

В квитанции необходимо распечатать все выбранные процедуры вместе со стоимостью для каждого отдельного лечения. Мне также нужно будет добавить переменную, чтобы добавить общую сумму для всех выбранных обработок.

Ответ №1:

Вот что вы пытаетесь сделать, поскольку обработки фиксированы, поэтому вы можете просто индексировать их как 0, 1, 2. Одна вещь, которую вы можете сделать, это создать hashmap, в котором вы можете сохранять имя лечения и его стоимость (String,int) каждый раз, когда пользователь хочет изменитьвведите. Посмотрите на приведенный ниже код

 import java.util.*;
import java.util.HashMap;

public class treatment {

public static void main(String []args) {
    
    String[][] array = {{"Checkup", "60"},
                {"Repairing tooth", "150"},  
                {"Cleaning", "30"}};  // Menu of treatments

     // New array that saves up to 10 elements(treatments)
    HashMap<String, Integer> treat = new HashMap<String, Integer>();


    int cost = 0;  
    int treatment = 0;

    Scanner input = new Scanner(System.in);



    int n = array.length;
    int i =0;
    char c = '';

    do {
        System.out.println("nnControl"   " "   "1");
        System.out.println("Repair tooth:"   " "   "2");
        System.out.println("Cleaning:"   " "   "3");
        System.out.println("Exit: "   "-1");
        System.out.println();
        System.out.print("Enter treatment value (1, 2, 3): ");
        treatment = input.nextInt();

        if (treatment==1){ 
            i = 0;
            cost  = Integer.parseInt(array[0][1]);
            System.out.println("nTotal cost so far: "   cost);

        }
        else if (treatment==2) {
            i = 1;
            cost  = Integer.parseInt(array[1][1]);
            System.out.println("nTotal cost so far: "   cost);
        }
        else if (treatment==3) {
            i = 2;
            cost  = Integer.parseInt(array[2][1]);
            System.out.println("nTotal cost so far: "   cost);
        }
        treat.put(array[i][0], cost);

    } while (treatment != -1);

    System.out.println("Total COst is : "   cost);
    System.out.println("The treatements you opt for are:n");
    System.out.println(treat);
    System.out.println("n");
    
   }
}
  

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

1. Спасибо! Мне не разрешено использовать HashMap для этого, но я думаю, что смогу продолжить с аналогичным решением 🙂

2. Я рад, что это помогло.