2016-03-20 17 views
0

Hayvanlara girebildiğiniz ve gereksinim duydukları ekleri içeren bir veritabanı hazırlıyorum. Çok boyutlu bir dizi kullanmalıyım. İçinde bulunduğum sorun, bir kullanıcı çok boyutlu diziye veri girdiğinde, sınırların dışında bir hata alıyorum. Şaşkınım çünkü kullanıcı için hayvanın türünü ve gerekli olan takviye sayısını girmesi için aynı metodolojiyi kullandım, ancak eke gerçekten girdiğinde, her bir hayvan için takviyeleri tutmak için girişimi ve diziyi tuttum. daha görsel Referans için, benim mantık bu gibi olmak istedim:Çok boyutlu bir dize dizisinin belirli bir parçasının doldurulması (Sınırların dışında)

İsimler Hayvan Türü takviyeleri her hayvan üzerinde yatay bir biçimde doldururken 1

Hayvan türleri ilk sütunu inmek 1 Ek. Kodumu gönderirim ancak özellikle sınırlar dışındaki diziyle ilgili sorunları çözerim. Çok diziyi nasıl başlattığımla ilgili olduğundan şüpheliyim, ama bu noktada emin değilim. Herhangi bir yardım büyük takdir edilecektir!

// Nicholas Stafford // 1 Şubat 2016 // veritabanı

ararken hayvanlar ve diyet bilgilerin herhangi sayıya kadar kullanıcı girişi sağlayacak ve daha sonra bu bilgileri görüntülemek için kullanıcı sağlayacak Bu program
import java.util.Scanner; 
import java.util.Arrays; 

genel sınıf stok {

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); 

    }  

}

cevap

0

bir dizi initializ sonra ed, boyutu değiştirilemez. Bunun olmadığından emin olmak için, sabit sınırlara sahip olmayan ArrayList <> öğesini kullanın. Sözdizimi + tüm ayrıntılarını burada bulabilirsiniz: https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html

Yardım edin!

ps. Ayrıca sadece 1 tarayıcı girişini başlatabilir ve

+0

Ah boyunca kullanabilirsiniz. Çok boyutlu bir dizi kullanmak zorunda kalmıyorum, dizi listesi yok ama kullanıcıya her yineleme için başka bir ek almak istediklerini soracağım. Diziyi 100 olarak tanımlayıp kullanıcıya istedikleri takviyeyi sorsaydım, diziyi dolduracak ve başlangıç ​​değerinin değiştirilemeyeceğini düşündüm. – NStafford

İlgili konular