2015-04-13 2 views
-4

У меня есть класс, «автомобиль», который должен позволять сохранять массив с информацией, вводимой пользователем, но когда я пытаюсь получить метод для приема данных с помощью счетчик, дающий каждому вводу данных уникальный номер, который он не принимает ничего мимо [на vehicle vehiclearray[totalcount] = new vehiclearray(count,licence,date,value,colour); Я относительно новичок в java, и эта проблема меня превзошла, любая помощь будет оценена.Счетчик для массива, вызывающий незаконный запуск выражения

Это целый код, проблема в подменю1.

import java.util.Scanner; 

class main 
{ 
    public static void main(String[] args) 
    { 
     Scanner input = new Scanner (System.in); 
     int option = menu(); 
     int totalcount = submenu1.totalcount; 
     int carcount = submenu1.carcount; 
     int bikecount = submenu1.bikecount; 
     vehicle vehiclearray[] = new vehiclearray[100]; 

     if (option == 1) 
      submenu1(vehiclearray); 
     else if (option ==2) 
      submenu2(totalcount, vehiclearray); 
     else if (option ==3) 
      submenu3(totalcount, carcount, bikecount,museumbike, museumcar); 
     else if (option ==4) 
      submenu4(carcount, museumcar); 
     else if (option ==5) 
      submenu5(bikecount, museumbike); 
     else if (option ==6) 
      System.out.println("Thank you for using this program"); 
     else 
      System.out.println("Invalid selection, please try again."); 
    } 
} 

class menusystem 
{ 
    public static int menu() 
    { 
     Scanner input = new Scanner (System.in); 
     int option = 0; 

     System.out.println("Please select an option"); 
     System.out.println("======================="); 
     System.out.println("1. Add a vehicle to the collection"); 
     System.out.println("2. List vehices manufactured by a specifit year"); 
     System.out.println("3. List all vehcles of a certain engine size or more"); 
     System.out.println("4. list all cars"); 
     System.out.println("5. List all bikes"); 
     System.out.println("6. Exit"); 
     option = input.nextInt(); 
     return option; 
    } 

    public static int submenu1(vehicle vehiclearray[]) 
    { 
     Scanner input = new Scanner (System.in); 
     String suboption1; 
     int totalcount = carcount = bikecount = 1; 

     System.out.println("Is the vehicle a car or a bike? (exit to close)"); 
     suboption1 = input.next(); 
     while(!suboption1.equalsIgnoreCase("exit")) 
     { 
      if (suboption1.equalsIgnoreCase("car")) 
      { 
       vehicle.id=count; 
       System.out.println("Please enter the licence, manufacture year, car value and colour of the car"); 
       vehicle vehiclearray[totalcount] = new vehiclearray(count,licence,date,value,colour); 
       System.out.println("Please enter the number of doors, number of seats, engine type (petrol or deisol) and engine size in litres"); 
       museumcar museumcar[carcount] = new museumcar(cardoors,seats,enginetype,carenginesize); 
       totalcount++; 
       carcount++; 

      } 
      else if (suboption1.equalsIgnoreCase("bike")) 
      { 
       System.out.println("Please enter the licence, manufacture year, car value and colour of the bike"); 
       vehicle vehiclearray[totalcount] = new vehiclearray(licence,date,value,colour); 
       vehicle.id=count; 
       System.out.println("Please enter the bike type (sports, tourer or trials) and engine size in cc"); 
       museumbike museumbike[bikecount] = new museumbike(type,bikeenginesize); 
       totalcount++; 
       bikecount++; 
      } 
      else 
       System.out.println("Please enter a valid entry."); 

       System.out.println("Is the vehicle a car or a bike? (exit to close)"); 
       suboption1 = input.next(); 
       return bikecount; 
       return carcount; 
       return totalcount; 
     } 
    } 

    public static void submenu2(int totalcount, vehicle vehiclearray[]) 
    { 
     Scanner input = new Scanner (System.in); 
     int desiredyear = 0; 
     int count = 1; 

     System.out.println("What vehicle manufacture date do you want to see?"); 
     desiredyear = input.nextInt(); 
     for (count = 1; count <= totalcount; count++) 
     { 
      if (vehiclearray[totalcount].getdate == desiredyear) 
       System.out.println(vehiclearray[totalcount] +" id : "+ vehiclearray[totalcount].getlicence(), +" licence : "+ vehiclearray[totalcount].getdate(), +" date : "+ vehiclearray[totalcount].getvalue(), +" value : "+ vehiclearray[totalcount].getcolour() +" colour:"); 
      else 
       System.out.println(vehiclearray[totalcount] +" does not match the desired manufacture year"); 
     } 
    } 

    public static void submenu3(int totalcount, int carcount, int bikecount, museumbike museumbike[], museumcar museumcar[]) 
    { 
     Scanner input = new Scanner (System.in); 
     double desiredsize = 0; 
     int count = 1; 

     System.out.println("What vehicle size or more do you want to see?"); 
     desiredsize = input.nextDouble(); 
     for (count = 1; count <= totalcount; count++) 
     { 
      if (desiredsize >=0 && desiredsize <=100) 
      { 
       if (museumcar[carcount].getcarenginesize >= desiredsize) 
        System.out.println(museumcar[carcount].getcardoors(), +(" doors : ")+ museumcar[carcount].getseats(), +(" seats : ")+ museumcar[carcount].getenginetype(), +(" : ")+ museumcar[carcount].getcarenginesize() +("ltrs")); 
       else 
        System.out.println("This car has a lower engine size then the desiredsize"); 
      } 
      else if (desiredsize >=100) 
       System.out.println(museumbike[bikecount].gettype(), +(" : ")+ museumbike[bikecount].getbikeenginesize() +("cc")); 
     } 
    } 

    public static void submenu4(int carcount, museumcar museumcar[]) 
    { 
     int count = 1; 

     for (count = 1; count <= museumcar[carcount]; count++) 
     { 
      System.out.println(museumcar[carcount].getcardoors(), +(" doors : ")+ museumcar[carcount].getseats(), +(" seats : ")+ museumcar[carcount].getenginetype(), +(" : ")+ museumcar[carcount].getcarenginesize() +("ltrs")); 
     } 
    } 

    public static void submenu5(int bikecount, museumbike museumbike[]) 
    { 
     int count = 1; 

     for (count = 1; count <= museumbike[bikecount]; count++) 
     { 
      System.out.println(("bike id:")+ museumbike[bikecount].gettype(), +(" : ")+ museumbike[bikecount].getbikeenginesize() +("cc")); 
     } 
    } 
} 

class vehicle 
{ 
    private int carid; 
    private String licence; 
    private int date; 
    private Double value; 
    private String colour; 


    vehicle (int i,String l, int d, double v, String c) 
    { 
     id = i; 
     licence = l; 
     date = d; 
     value = v; 
     colour = c;  
    } 
    int getid() 
    { 
     return id; 
    } 

    String getlicence() 
    { 
     return licence; 
    } 

    int getdate() 
    { 
     return date; 
    } 

    Double getvalue() 
    { 
     return value; 
    } 

    String getcolour() 
    { 
     return colour; 
    } 
} 

class museumcar extends vehicle 
{ 
    private int cardoors; 
    private int seats; 
    private String enginetype; 
    private Double carenginesize; 


    museumcar (int cd, int s, String et, Double ces) 
    { 
     super (i, l, d, v, c); 
     cardoors = cd; 
     seats = s; 
     enginetype = et; 
     carenginesize = es;  
    } 

    int getcardoors() 
    { 
     return cardoors; 
    } 

    int getseats() 
    { 
     return seats; 
    } 

    String getenginetype() 
    { 
     return enginetype; 
    } 

    Double getcarenginesize() 
    { 
     return carenginesize; 
    } 
} 

class museumbike extends vehicle 
{ 
    private String type; 
    private Double bikeenginesize; 

    museumbike (String t, Double bes) 
    { 
     super (i, l, d, v, c); 
     type = t; 
     bikeenginesize = bes;  
    } 

    String gettype() 
    { 
     return type; 
    } 

    Double getbikeenginesize() 
    { 
     return bikeenginesize; 
    } 
} 
+4

Пожалуйста, ознакомьтесь с http://stackoverflow.com/help/mcve –

+0

Пожалуйста, внесите изменения, чтобы ответить. Если что-то неясно, спросите. –

ответ

0

Там нет vehiclearray класса, и поэтому вы не можете сделать new vehiclearray[...], но вместо этого должен делать new vehicle[...].

Так, например, эта строка кода не является законным:

vehicle vehiclearray[] = new vehiclearray[100]; 

, но это:

vehicle vehiclearray[] = new vehicle[100]; 

В общем, я думаю, что большинство объявить нашу переменную со скобками матрицы на класс, а не переменная:

vehicle[] vehiclearray = new vehicle[100]; 

Хотя ваш путь законен (если вы создали правильный массив объявление объекта).

Дополнительные примечания:

  • Ваши имена классов должны начинаться с заглавной буквы так, чтобы соответствовать Java именования, так что другие (нам!) Можно лучше понять ваш код.
  • Если у вас есть вопрос, и ваш код не компилируется, вы должны опубликовать все и все сообщения об ошибках компилятора с вашим вопросом, а также указать, какие строки в вашем коде вызывают ошибки.
+0

Массив вызывал одну из проблем, как вы сказали, я не инициализировал ее правильно. Спасибо за глубинную реакцию. –

Смежные вопросы