Корзина - Массив, не хранящий значение - PullRequest
0 голосов
/ 03 июля 2018

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

public static void main(String[] args){

    Scanner scan = new Scanner(System.in);

    int[][] itemsCart;
    int itemsInTheCart=0;
    int itemsPrice = 0;

    System.out.print("Please enter the number of items in your cart: ");
    itemsInTheCart = scan.nextInt();

     for(int i = 0; i < itemsInTheCart; i++){
        System.out.print("Enter the price for item " + (i+1) + ": ");

        itemsPrice = scan.nextInt();

        itemsCart = new int[itemsPrice][itemsPrice];

        // System.out.println(itemsCart.length);
    }

}

Ответы [ 4 ]

0 голосов
/ 03 июля 2018

Как уже упоминалось @ "Scary Wombat", ваш подход лучше подходит для одномерного массива, чем для 2D. Однако, поскольку вы хотите использовать 2D-массив, я хотел бы указать, где ваш код может быть лучше. Также он отметил необходимость декларировать размер перед использованием 2D-массива

Ваша строка "itemsCart = new int [itemsPrice] [itemsPrice];" было бы лучше, так как itemsCart = new int [i] [itemsPrice]; поскольку это обеспечит заполнение новых индексов соответствующими значениями.

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

public static void main(String[] args){

    Scanner scan = new Scanner(System.in);

    int[][] itemsCart;
    int itemsInTheCart=0;
    int itemsPrice = 0;
    System.out.print("Please enter the number of items in your cart: ");
    itemsInTheCart = scan.nextInt();
    itemsCart= new int[itemsInTheCart][2];
    for(int i = 0; i < itemsInTheCart; i++){
        System.out.print("Enter the price for item " + (i+1) + ": ");

        itemsPrice = scan.nextInt();

        itemsCart[i][1] = itemsPrice;
    }
    // for testing
    for (int i=0;i<itemsInTheCart;i++){
        System.out.println("Item: "+(i+1)+" for price: "+ itemsCart[i][1] );
    }
}
0 голосов
/ 03 июля 2018
import java.util.Scanner;
public class Main{

 public static void main(String[] args){

Scanner scan = new Scanner(System.in);
int itemsInTheCart=0;
System.out.print("Please enter the number of items in your cart: ");
itemsInTheCart = scan.nextInt();
int[] itemsCart = new int[itemsInTheCart]; 

 for(int i = 0; i < itemsInTheCart; i++){
    System.out.print("Enter the price for item " + (i+1) + ": ");
    itemsCart[i] = scan.nextInt();
}

 for(int i = 0; i < itemsInTheCart; i++){

     System.out.println(itemsCart[i]);
     }
}
}
0 голосов
/ 03 июля 2018

Вместо этого используйте ArrayList

например, создать объект класса

class ShoppingDetails{
    private String itemName;
    private Integer price;

    public ShoppingDetails(String itemName, Integer price) {
        this.itemName = itemName;
        this.price = price;
    }
    //add getter and setter if you want
}

Теперь вы можете использовать его в

ArrayList<ShoppingDetails> shoppingCart=new ArrayList<>();


shoppingCart.add(new ShoppingDetails("item1",100);

Таким образом вы можете отобразить цену на товары.

0 голосов
/ 03 июля 2018

Массив должен быть объявлен с его размером, прежде чем его можно будет использовать.

Также в вашем примере вам не нужен двухмерный массив, хорошо подойдет одномерный массив.

Также вам нужно инициализировать ваш массив вне цикла, иначе он будет переопределен в каждой итерации

System.out.print("Please enter the number of items in your cart: ");
itemsInTheCart = scan.nextInt();
int [] itemsCart = new int [itemsInTheCart];

for (....) {

    itemsCart[i] = itemsPrice;

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...