1

Тема: Проблема в программі

Я почав програмувати на Java після С++... В Java почав вивчати ООП... і не розумію чому цей код не працює.. Допоможіть будь-ласка..

Прихований текст
import java.util.Scanner;

public class Main {
    public static void main(String[] argc){

        String namePeopl = null;
        String lastName = null;
        int agePeople = 0;
        String yn = null;

        Cat cat;
        People people;

        Scanner in = new Scanner(System.in);

        System.out.println("Ввседите имя человека: ");
        in.next(namePeopl);
        System.out.println("Введите фамилию человека: ");
        in.next(lastName);
        System.out.println("Введите возрост человека: ");
        in.nextInt(agePeople);
        System.out.println("Есть ли у него кот?");
        in.next(yn);

        int age= 0;
        String name = null;
        String porode = null;
        String color = null;

        if(yn == "Да"){

            System.out.println("Имя кота: ");
            in.next(name);
            System.out.println("Порода кота: ");
            in.next(porode);
            System.out.println("Цвет шерсти: ");
            in.next(color);
            System.out.println("Возрост кота: ");
            in.nextInt(age);
        }
        cat = new Cat(name, age, color, porode);
        people = new People(namePeopl, lastName, agePeople, cat);
        System.out.println(" ");
        System.out.println(" ");
        System.out.println("Информация о человеке: " + people);
    }
}

В консоли такое:

Прихований текст

Ввседите имя человека:
Exception in thread "main" java.lang.NullPointerException
    at java.util.regex.Pattern.<init>(Pattern.java:1350)
    at java.util.regex.Pattern.compile(Pattern.java:1028)
    at java.util.Scanner$1.create(Scanner.java:367)
    at java.util.Scanner$1.create(Scanner.java:365)
    at sun.misc.LRUCache.forName(LRUCache.java:72)
    at java.util.Scanner.next(Scanner.java:1418)
    at Main.main(Main.java:17)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:483)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)

Process finished with exit code 1

2 Востаннє редагувалося koala (14.03.2015 17:12:41)

Re: Проблема в программі

Nirvana_Code написав:
    at Main.main(Main.java:17)

В 17-му рядку у вас загадковий in.next(namePeopl); - ви б глянули в довідку, як Scanner.next користуватися. Бо наразі ви викликаєте ось це.

Ну і переходьте вже на людську мову, а то забанять.

3

Re: Проблема в программі

Java не має такого поняття, як параметр-змінна. Тому методи сканера слід використовувати так:
[code=java]
namePeopl=in.next();
agePeople=in.nextInt();
[/code]
Помилка вискочила не під час компіляції, а при виконанні лише тому, що використані тут методи можуть мати необов'язкові параметри, що задають формат вводу (але значення null їм не підходить, і навіть із ними результат вводу повертається як результат функції, а не в ці параметри, що в Джаві технічно неможливо).

Подякували: Nirvana_Code, koala, leofun013