2013-11-15 5 views
0

Я новичок в программировании и не могу понять, как создать новый объект с помощью конструктора с двумя аргументами. Я просто собираюсь скопировать/вставить код из соответствующей программы.Проблема создания объекта с конструктором с двумя аргументами

Это мой класс:

public class Car { 

    private int yearModel; 
    private String make; 
    private static int speed; 


    public Car (int yM, String m) 
    { 
     yearModel = yM; 
     make = m; 
     speed = 0; 
    } 

Это мой тестовый класс:

public class TestCar { 

    private static String Honda; 

    public static void main(String[] args) 
    { 
     Car c1 = new Car(1999, Honda); 

я не мог запустить программу без добавления "private static String Honda;".

Когда я запускаю его, я получаю Null для Honda.

ответ

3

Ваш конструктор принимает строковый объект, но Honda, с которой вы проходите, не является строкой. Попробуйте добавить к нему двойные кавычки, если «Хонда» - это то, что вы хотите передать.

Без кавычек компилятор думает, что вы пытаетесь ссылаться на переменную Honda, но она не может ее найти. Как только вы объявите переменную с битом «private static String Honda», он найдет переменную. У вас все еще есть проблема, потому что Honda не настроена ни на что. Либо установите переменную Honda на некоторое значение (предпочтительно «NSX» или «S2000»), либо просто передайте это значение непосредственно конструктору (заключая его в кавычки, как я упоминал выше).

+0

О, ничего себе я даже не думал об этом. Благодаря! –

0

main() является статической функцией .. Статические функции не может использовать не статические vaiables поэтому Honda должна быть статичной.

Honda не был инициализирован так инициализировать Honda следующим образом:

private static String Honda = "Some String"; 

или

private static String Honda = new String("Some String"); 

Доступ ссылки (String Honda) без его объекта (новая строка ("")) будет всегда приводите вас к null pointer exception.

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