2017-11-22 3 views
2

Ich versuche eine textbasierte App zum Registrieren und Auflisten von Elementen mit Arrays zu erstellen, aber ich bin nicht erfolgreich Erstellen eines leeren Arrays und "injizieren" von Informationen darin. Könntest du mir helfen? Wenn ich Option 1 wähle, kommt die Ausnahme "Ausnahme im Thread" main "java.lang.ArrayIndexOutOfBoundsException: 0 bei AppTrabFinal.main (AppTrabFinal.java:38)". Ich weiß, dass es mit leeren Arrays zu tun hat, aber mein Lehrer hat uns nicht beigebracht, wie man ohne eine vorgegebene Länge baut und ich bin verloren, wenn ich versuche, es selbst zu tun. Vielen Dank im VorausJava - Probleme beim Eingeben von Benutzereingaben in ein leeres Array (textbasierte App zum Registrieren von Produkten)

import java.util.Scanner; 

public class AppTrabFinal { 
public static void main(String[] args) { 
    Scanner entrada = new Scanner(System.in); 
    int i, option; 
    String[] items = {}; 
    double[] prices = {}; 

    System.out.printf("Welcome to the Yellow Submarine store. What would you like to do?\n"); 

    do { 
     System.out.println("\n========= Option Menu ========="); 
     System.out.println("1 – Register a product"); 
     System.out.println("2 – List your products"); 
     System.out.println("3 – Exit"); 
     System.out.println("==================================\n"); 
     System.out.println("Choose an option: "); 

     option = entrada.nextInt(); 

     switch (option) { 
      case 1: 
       for(i = 0; i < 10; i++) { 
        System.out.println("\nType the name of the product you would like o register: "); 
        items[i] = entrada.nextLine(); 
        System.out.println("Enter it's price: "); 
        prices[i] = entrada.nextDouble(); 
       }  
       break; 
      case 2: 
       for(i = 0; i > 0; i++) { 
        System.out.println(items[i+1]); 
       } 
       break; 
      case 3: 
       System.out.println("\nLogging out. Thank you for using our app."); 
       break; 
      default: 
       System.out.println("Invalid option, try a different number."); 
       break; 
     }  
    } while (option != 3); 
    } 
} 

Antwort

0

Sie initialisieren String[] items = {}; double[] prices = {}; ohne Elemente das heißt mit einer Kapazität von 0. Weil Arrays eine feste Größe haben.

Sie also, wenn Sie die maximale Größe des Arrays kennen, die 10 aus dem Code zu sein scheint, dann initialisieren wie unten:

String[] items = new String[10]; 
double[] prices = new double[10]; 

Und wenn Sie unsicher über die maximale Größe sind, dann können Sie ArrayList verwenden, die beginnt von Index 0 und akzeptiert nur objects. Also, Sie müssen Klassen-Wrapper heißt für beispielsweise die Verwendung int verwenden ArrayList<Integer>

können Sie mehr lesen ArrayList

1

Arrays benötigen immer eine vorgegebene Länge. Stattdessen könnten Sie eine ArrayList verwenden, die wachsen kann. Betrachten Sie das folgende Codebeispiel:

List<Integer> list = new ArrayList<Integer>(); 
list.append(42); 
list.append(84); 
// The list now contains: [42, 82] 
list.get(0); // Returns 42 
Verwandte Themen