Zadanko, help

0

Hej,

Potrzebuje pomocy. Napisałem taki kod i nie do końca wiem, dlaczego to mi nie działa i nie przeskakuje dalej. Kolejny problem to, że jak stworzyłem nowy String to nie za bardzo wiem jak przypisać nową zmienną name albo int do pierwszego obiektu. Ktoś pomoże ? : )

package com.company;
import java.util.Scanner;
import java.util.regex.Pattern;

import static java.util.regex.Pattern.matches;

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

        Person person1 = new Person();
        Person person2 = new Person();
        Scanner sc1 = new Scanner(System.in);

        // 1 Person nmae
        System.out.println("Enter a name: ");
        String name;
        boolean valid = true;
        do {
            name = sc1.next();
            if (checkName(name))
            {
                valid = false;
                person1.setName(sc1.nextLine());
            }
            else
                {
                System.out.println("Enter your name again");
            }
        }
            while (valid);

        // 2 Person age
        System.out.println("Enter an age");
        String age;
        boolean x = true;
        do {
                age = sc1.nextLine();
                if (checkAge(age))
                {
                x = false;
                }
                else
                {
                    System.out.println("Enter your age again");
                }

        } while (x);
        person1.setAge(Integer.valueOf(age));

        System.out.println("Enter a name: ");
        person2.setName(sc1.nextLine());
        System.out.println("Enter an age");
        person2.setAge(Integer.valueOf(sc1.nextLine()));
        System.out.println("you should of typed number");

        if (person1.getAge() > person2.getAge())
        {
            System.out.println(person1.getName() + "is older and was born" + (2019-person1.getAge()));
        }
        else if (person1.getAge() < person2.getAge())
        {
            System.out.println(person2.getName() + "is older and was born" + (2019-person2.getAge()));
        }
        else {
            System.out.println(person1.getName() + "and" + person2.getName() + "have the same age and were born" + (2019 - person1.getAge()));
        }

    }
    public static class Person{
        private String name;
        private int age;
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }
    }
    public static  boolean checkName(String name) {
         return Pattern.matches("[a-zA-Z]", name);
    }
    public static boolean checkAge(String age) {
        return Pattern.matches("\\d", age);
    }

}
0

Trzeba to zrobić tak iteracyjnie bardziej. Teraz jest wszystko i chyba wszystko jest źle.
Najpierw regexy ogarnij. Twoje imię jest poprawne gdy jest literą a-z albo A-Z a wiek jeśli jest cyfrą. Trochę bez sensu.
Wiesz co znaczy słowo valid? Dlaczego ustawiasz valid na true jak nie jest valid a nafalse jak jest?

0

Naucz się pisać posty, albo chociaż formułować problem; skoro to zadanko, to powinno być podane co ma nbyć na wejściu, co na wyjściu i jakie jest pytanie. Zobacz tutaj:
https://stackoverflow.com/help/minimal-reproducible-example

0

Przecież ja tam mogę dać dowolne słowo albo znak, nie musi być valid… dałem valid ot tak, po prostu.
Hmm, więc jakieś propozycje ?

0

Dlaczego klasa Person jest statyczna?

0

hmm, a dlaczego nie ? :)

0

Dziękuję za odpowiedź.
A co mi to da jeśli to rozbiję i jak mógłbym to rozbić wg. Ciebie?

0

Nie rób z tego Maina jakiegoś mutanta, tylko rozbij to na normalną publiczną klasę Person w osobnym pliku. Będzie Ci dużo prościej z tym kodem pracować, bo będzie bardziej czytelny/zrozumiały, już nie mówiąc o tym, że bardziej poprawny. W kontekście tego co chcesz osiągnąć, to ładowanie tutaj statycznej klasy wewnętrznej nie ma sensu.

0

Okei,
Zadanie rozwiązałem. Dzięki za pomoc : )
Jeśli ktoś chciałby cały kod to dawajcie na priv.
Pozdro.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0