Scanner-Parsowanie

0

Cześć,
Mam pytanie czy tak zrobiony Scanner może być i potem parsować każdą wartość jak chce double,int?
Czy to tylko zaśmiecanie kodu parsami i zostawić dla liczb odpowiednie dla nich prymitywy?

import java.util.Scanner;
KLASA TEST
public class Test {

	public static void main(String[] args) {
		
		System.out.println("podaj swój wiek ");
		String wiek = wyszukiwarka(skan);
		System.out.println("podaj swój wagę ");
		String waga = wyszukiwarka(skan);
		System.out.println("podaj swój wzrost ");
		String wzrost = wyszukiwarka(skan);
		System.out.println("podaj swój imie ");
		String imie = wyszukiwarka(skan);
		System.out.println("podaj swój płeć:(MEN or WOMEN)");
		String plec = wyszukiwarka(skan);
		//int a = Integer.parseInt(wiek);
		// System.out.println(a);

		Human osoba1 =new Human("29","67.5","188", "marcin", "MEN");
		Human osoba2 = new Human(wiek, waga, wzrost, imie, plec);
		
		System.out.println(osoba1);
		System.out.println(osoba2);
			
	}

static Scanner skan = new Scanner(System.in);
 static String wyszukiwarka(Scanner skan) {
	return skan.nextLine();
}
}

KLASA HUMAN

public class Human {
	private String age;
	private String weight;
	private String height;
	private String name;
	private String isMale;
	

	public String getAge() {
		return age;
	}

	public void setAge(String age) {
		this.age = age;
	}

	public String getWeight() {
		return weight;
	}

	public void setWeight(String weight) {
		this.weight = weight;
	}

	public String getHeight() {
		return height;
	}

	public void setHeight(String height) {
		this.height = height;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getIsMale() {
		return isMale;
	}
	public void setIsMale(String isMale) {
		this.isMale = isMale;
	}	
	@Override
	public String toString() {
		return "Human [" + age + "," + weight + ", " + height + "," + name + ", "+ isMale + "]";
	}

	public Human(String age, String weight, String height, String name, String isMale) {
		super();
		this.age = age;
		this.weight = weight;
		this.height = height;
		this.name = name;
		this.isMale = isMale;
	}
}
0

Wszystkie te dane powinny być sparsowane:

  • age - Nie powinieneś przechowywać wieku tylko datę urodzenia (np. LocalDate) i na tej podstawie wyliczać wiek.
  • weight i height - tu będziesz przechowywał liczby zmienno przecinkowe więc także zmień to na odpowiedni typ.
  • name - String jest jak najbardziej okej
  • isMale - ja bym te zmienną nazwą male a getter do tego powinien być isMale
 public Human(String age, String weight, String height, String name, String isMale) {
        super();

Po co Ci to super?

Ta metoda jest troche dziwna:

   static Scanner skan = new Scanner(System.in);
   static String wyszukiwarka(Scanner skan) {
       return skan.nextLine();
  }

Jeśli już tworzysz zmienną globalną to nie ma sensu żebyś ją tam przechowywał tak więc ta metoda w ogóle nie ma sensu. Już lepiej by to wyglądało np. tak:

  Scanner keyboard = new Scanner(System.in);
  System.out.println("podaj swoje imię: ");
  String wiek = keyboard.nextLine();
1

Sztuczny problem stwarzasz.

  1. Jak chcesz mieć typy, to dlaczego nie używasz typów? liczbowy na wiek, wagę, enum na płeć (ew prowizorycznie bool). EDIT: bdb pomysł na datę ma @eL
  2. Masz cokolwiek dużo setterów, jesteś pewien że ich chcesz?
  3. uporządkuj słownictwo, np dlaczego nazwa 'wyszukiwarka' skoro niczego nie szuka?

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