• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zamiana kodu C++ na Java.

0 głosów
2,566 wizyt
pytanie zadane 16 maja 2016 w Java przez KMASBIn Nowicjusz (150 p.)
edycja 16 maja 2016 przez KMASBIn

Witam,

Próbuje swoich sił w programowaniu obiektowym, a konkretniej w Javie i z tego co pamiętam Pan Mirosław bardzo dobrze tłumaczy zagadnienia z tematu programowania, więc postanowiłem posłuchać jak to jest z C++. Po obejrzeniu 1 odcinka miałem zamiar przerobić kod Pana Mirosława z danego odcinka na język Jave'y, ale mam 1 problem:

​
import java.util.Scanner;

public class Nauka2 
{
	public class Zwierze
	{
		String gatunek;
		String Imie;
		int wiek;
		
		public void dodaj_zwierze()
		{
			System.out.println("Dodawanie nowego zwierzaka...");
			System.out.println("Dodaj gatunek...");
			Scanner skaner = new Scanner(System.in);
			gatunek = skaner.nextLine();
			System.out.println("Dodaj Imie...");
			Imie = skaner.nextLine();
			System.out.println("Dodaj wiek...");
			wiek = skaner.nextInt();
		}
		public void daj_glos()
		{
			if(gatunek == "kot")
			{
				System.out.println("Kot, lat " +wiek+ " o imieniu " +Imie+" mowi: Miau...");
			}
			else if(gatunek == "Pies")
			{
				System.out.println("Pies, lat " +wiek+ " o imieniu " +Imie+" mowi: Hau, hau...");
			}
			else if(gatunek == "krowa")
			{
				System.out.println("Krowa, lat " +wiek+ " o imieniu " +Imie+" mowi: Muuu, muuu...");
			}
			else
			{
				System.out.println("Nieznane!!!");
			}
		}
	}
	
	public static void main(String[] args)
	{
		Zwierze z1 = new Zwierze();
        z1.dodaj_zwierze();
        z1.daj_glos();
		
	}
}

 

Jak mogę wywołać w main'ie klasę Zwierze, ponieważ próbowałem kilku sposobów, ale nie wychodzi za każdym razem?

2 odpowiedzi

+1 głos
odpowiedź 17 maja 2016 przez Przybysz_4444 Gaduła (3,200 p.)
wybrane 17 maja 2016 przez KMASBIn
 
Najlepsza
Klasę wywołujesz dobrze, ale :

* Niepotrzebnie piszesz wszystko w klasie "Nauka2" , może od razu pisać w klasie "Zwierze" . Ale jeśli chciałbyś zostać by obecnej formie , musiałbyś klasę "Zwierze" zadeklarować jako statyczną (public static class Zwierze)

* Kolejnym błąd to sprawdzanie w instrukcjach warunkowych , zawartości zmiennych "==" , robi się to za pomocą "equals"

np. :                  

if(gatunek.equals("kot")) { }

:)
komentarz 17 maja 2016 przez KMASBIn Nowicjusz (150 p.)
Wielkie dzięki! Już nie chciałem pisać kolejnego tematu z tym, że if nie działa mi ;)

Więc pod sumując każdą klasę najlepiej jest pisać w oddzielnym pliku i później lepiej ją wywoływać w main'ie?
komentarz 17 maja 2016 przez Przybysz_4444 Gaduła (3,200 p.)
Niekoniecznie, Twoją klasę można wywołać od razu bez dodatkowego piliku  klasy "Main".
1
komentarz 17 maja 2016 przez Przybysz_4444 Gaduła (3,200 p.)

Ja bym proponował taki wygląda kodu :

import java.util.Scanner;
 
public class Zwierze
{
    String gatunek;
    String Imie;
    int wiek;
 
    public void dodaj_zwierze()
    {
        System.out.println("Dodawanie nowego zwierzaka...");
        System.out.println("Dodaj gatunek...");
        Scanner skaner = new Scanner(System.in);
        gatunek = skaner.nextLine();
        System.out.println("Dodaj Imie...");
        Imie = skaner.nextLine();
        System.out.println("Dodaj wiek...");
        wiek = skaner.nextInt();
    }
    public void daj_glos()
    {
        if(gatunek.equals("kot"))
        {
            System.out.println("Kot, lat " +wiek+ " o imieniu " +Imie+" mowi: Miau...");
        }
        else if(gatunek.equals("Pies"))
        {
            System.out.println("Pies, lat " +wiek+ " o imieniu " +Imie+" mowi: Hau, hau...");
        }
        else if(gatunek.equals("krowa"))
        {
            System.out.println("Krowa, lat " +wiek+ " o imieniu " +Imie+" mowi: Muuu, muuu...");
        }
        else
        {
            System.out.println("Nieznane!!!");
        }
    }

 

    public static void main(String[] args) {
        Zwierze z1 = new Zwierze();
        z1.dodaj_zwierze();
        z1.daj_glos();
    }
}

 

komentarz 17 maja 2016 przez KMASBIn Nowicjusz (150 p.)
To żeby tak podsumować to kiedy najlepiej jest dzielić klasy na inne pliki, a kiedy najlepiej w jednym zapisać? Czy po prostu im dłuższy kod i klasy to lepiej rozpisać na inne pliki?
komentarz 17 maja 2016 przez Przybysz_4444 Gaduła (3,200 p.)
Takie podstawowe i krótkie kody najlepiej pisać w jednym pliku.

Ale jeśli kod jest obszerny to ciężko będzie się połapać w jednym "pliczku" ;)

Widzę że jesteś nowy na forum , więc jeśli uważasz moją odpowiedź za pomocną możesz oznaczyć ją jako "Najlepszą" :D
komentarz 17 maja 2016 przez KMASBIn Nowicjusz (150 p.)
Dzięki za pomoc i do następnych pytań :)
komentarz 17 maja 2016 przez Przybysz_4444 Gaduła (3,200 p.)
Również dzięki :D
komentarz 23 maja 2016 przez KamilloPL Gaduła (3,470 p.)
czy porównywanie == jest złe? uczę się javy i w książkach od podstaw porównianie widnieje jako == a != nierówne - jak to jest z tym?
komentarz 24 maja 2016 przez Przybysz_4444 Gaduła (3,200 p.)

Staraj się używać metody equals , ponieważ porównuje ona zawartość obiektów, zaś porównywanie " == "zależnie jest od miejsca obiektu w pamięci.

Używaj equals ;)

komentarz 25 maja 2016 przez Przybysz_4444 Gaduła (3,200 p.)
A zapomniałem dodać że za pomocą "equals" nie porównuje się np. zmiennych int . :)
0 głosów
odpowiedź 16 maja 2016 przez adas94 Nałogowiec (29,200 p.)
edycja 16 maja 2016 przez adas94

Pomieszałeś trochę te klasy i pewnie nazwy plików, bo jak robisz publiczną klasę, to powinna być ona w osobnym pliku o nazwie tej klasy, dodatkowo niepotrzebnie tam jest osobno klasa w klasie itd. Nie mam za bardzo czasu szczegółowo wytłumaczyć Ci tego błędu więc usunąłem zbędne rzeczy z Twojego kodu (teraz będzie działać, utwórz nowy projekt i skopiuj wszystko - tylko public class Main zmień na nazwę swojego projektu, w zależności jaką dasz mu nazwę).  Swoje błędy sam wyłapiesz porównując mam nadzieję :)



import java.util.Scanner;

class Zwierze
{
    String gatunek;
    String Imie;
    int wiek;

    public void dodaj_zwierze()
    {
        System.out.println("Dodawanie nowego zwierzaka...");
        System.out.println("Dodaj gatunek...");
        Scanner skaner = new Scanner(System.in);
        gatunek = skaner.nextLine();
        System.out.println("Dodaj Imie...");
        Imie = skaner.nextLine();
        System.out.println("Dodaj wiek...");
        wiek = skaner.nextInt();
    }
    public void daj_glos()
    {
        if(gatunek == "kot")
        {
            System.out.println("Kot, lat " +wiek+ " o imieniu " +Imie+" mowi: Miau...");
        }
        else if(gatunek == "Pies")
        {
            System.out.println("Pies, lat " +wiek+ " o imieniu " +Imie+" mowi: Hau, hau...");
        }
        else if(gatunek == "krowa")
        {
            System.out.println("Krowa, lat " +wiek+ " o imieniu " +Imie+" mowi: Muuu, muuu...");
        }
        else
        {
            System.out.println("Nieznane!!!");
        }
    }
}

public class Main {  // tutaj tylko zmieniasz nazwę klasy na taką jaką nazwę dasz projektowi, chyba, że utworzysz projekt o nazwie "Main"

    public static void main(String[] args) {
        Zwierze z1 = new Zwierze();
        z1.dodaj_zwierze();
        z1.daj_glos();
    }
}

 

komentarz 16 maja 2016 przez KMASBIn Nowicjusz (150 p.)
Aaaaaa już rozumiem, Klase Zwierze powinienem zrobić poza klasa Main :) Dziękuje bardzo za pomoc :)
komentarz 16 maja 2016 przez adas94 Nałogowiec (29,200 p.)
Tak, a już najlepiej w całkiem nowym pliku, wtedy jest przejrzyściej.
komentarz 17 maja 2016 przez Przybysz_4444 Gaduła (3,200 p.)
Nie lepiej byłoby zrobić bez dodatkowej klasy "Main" ?

i wszystko umieścić w klasie "Zwierze" ? :)
komentarz 17 maja 2016 przez efiku Szeryf (75,160 p.)
To się zrobi boska klasa ;) no i dlaeko jeszcze do obiektowosci tutaj, ale jest na dobrej drodze

Podobne pytania

0 głosów
1 odpowiedź 1,867 wizyt
pytanie zadane 29 marca 2018 w Java przez fyrr Użytkownik (910 p.)
–1 głos
1 odpowiedź 313 wizyt
pytanie zadane 20 stycznia 2017 w PHP przez tysiek Użytkownik (560 p.)
0 głosów
0 odpowiedzi 296 wizyt
pytanie zadane 12 grudnia 2017 w Java przez Paweł Jamroziak Użytkownik (520 p.)

93,755 zapytań

142,715 odpowiedzi

323,363 komentarzy

63,350 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...