Ich mache eine Datenbank, wo Sie in Tiere und die Ergänzungen eingeben können, die sie benötigen. Ich muss ein mehrdimensionales Array verwenden. Das Problem, auf das ich stoße, ist, dass ein Benutzer, der Daten in das multidimensionale Array eingibt, einen Fehler außerhalb der Grenzen erhält. Ich bin verwirrt, weil ich die gleiche Methodik für den Benutzer verwendet habe, um die Art des Tieres und die Anzahl der erforderlichen Ergänzungen einzugeben, aber wenn es tatsächlich in die Ergänzung kommt, habe ich eingeführt und Array halten, um die Ergänzungen für jedes Tier organisiert zu halten. Für eine visuelle Referenz, wollte meine Logik so sein:Füllen eines bestimmten Teils eines mehrdimensionalen String-Arrays (Out of Bounds)
Namen Tier Typ 1 Beiblatt 1
Die Tierarten die erste Spalte nach unten gehen, während die Ergänzungen in einer horizontalen Art und Weise an jedem Tier zu füllen. Ich poste meinen Code, aber speziell habe ich Probleme mit dem Array außerhalb der Grenzen bekommen. Ich vermute, dass es damit zu tun hat, wie ich das Multi-Array initialisiert habe, aber ich bin mir an dieser Stelle nicht sicher. Jede Hilfe würde sehr geschätzt werden!
// Nicholas Stafford // 1. Februar 2016 // Dieses Programm wird eine Benutzereingabe von bis zu einem beliebigen Anzahl von Tieren und Ernährungsinformationen und dann erlaubt es dem Benutzer ermöglichen, dass die Informationen angezeigt werden, wenn die Datenbank
Sucheimport java.util.Scanner;
import java.util.Arrays;
public class Inventar {
public static void main(String[] args)
{
//Initial variables
int choiceent;
int numAnimals = 0;
int numDiet = 0;
int ArrayHold = 0;
boolean isNum;
boolean isNum2;
boolean quit = false;
//Scanners needed for input
Scanner choice = new Scanner(System.in);
Scanner input1 = new Scanner(System.in);
Scanner input2 = new Scanner(System.in);
Scanner input3 = new Scanner(System.in);
Scanner input4 = new Scanner(System.in);
//Initial value needed to enter animals into database
System.out.println("Enter the number of animals you wish to enter:");
do
{
if(input1.hasNextInt()) {
numAnimals = input1.nextInt();
isNum = true;
}
else {
System.out.println("Please enter an integer value!");
isNum = false;
input1.next();
}
}
while(!(isNum));
System.out.println("You are entering " +numAnimals+ " animals.");
//Multidimensional array
String [][] ZooBase = new String [100][100];
//Array for data types
int numDietA[] = new int [numAnimals];
do{
System.out.println("1. Enter the names of each animal");
System.out.println("2. Enter the dietary information");
System.out.println("3. Search the array for information");
System.out.println("4. Close the program");
choiceent = choice.nextInt();
switch(choiceent)
{
case 1:
//Data validation for name
for(int i = 0; i < numAnimals; i++)
{
System.out.println("Enter the type of animal for animal " +i+ "");
while(!input2.hasNext("[a-zA-Z]+"))
{
System.out.println("Enter a type of animal!");
ZooBase[i+1][0] = input2.nextLine();
}
ZooBase[i+1][0] = input2.nextLine();
}
//Display Names
System.out.println("Names");
for(int j = 0; j < numAnimals; j++){
System.out.println(ZooBase[j+1][0]);
}
break;
case 2:
for(int j = 0; j < numAnimals; j++)
{
System.out.println("How many supplements does the " +ZooBase[j+1][0]+ " need?");
do
{
if(input3.hasNextInt()) {
numDietA[j] = input3.nextInt();
isNum2 = true;
}
else {
System.out.println("Please enter an integer value!");
isNum2 = false;
input3.next();
}
}while(!(isNum2));
}
for(int k = 0; k < numAnimals; k++)
{
ArrayHold = k+1;
for(int m = 0; m < numDietA[m]; m++)
{
System.out.println("Enter item " +m+ " for the " +ZooBase[m+1][0]+ "");
while(!input4.hasNext("[a-zA-Z]+"))
{
System.out.println("Enter a supplement (No integers)!");
ZooBase[ArrayHold][m+2] = input4.nextLine();
}
ZooBase[ArrayHold][m+2] = input4.nextLine();
}
}
break;
case 3:
break;
case 4:
quit = true;
break;
default:
System.out.println("Invalid option!");
break;
}
}while(choiceent != 4);
}
}
Ah, ich verstehe. Ich bin gezwungen, ein mehrdimensionales Array, keine Array-Liste zu verwenden, aber ich frage nur den Benutzer, ob er für jede Iteration ein anderes Supplement eingeben möchte. Ich dachte, dass, wenn ich das Array auf 100 definierte und den Benutzer fragte, wie viele Ergänzungen, die sie wollten, würde es nur füllen das Array und nicht tatsächlich seinen initialisierten Wert ändern. – NStafford