Porównywanie liczb z pobranych z konsoli
Spis treści
Zadanie
Pobierz w konsoli dwie liczby całkowite, następnie porównaj je i wyświetl stosowny komunikat z wynikiem.
Rozwiązanie
import java.util.Scanner;
public class Odczyt {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Podaj 1 liczbę: ");
int a = scanner.nextInt();
System.out.println("Podaj 2 liczbę: ");
int b = scanner.nextInt();
if (a == b) {
System.out.println("Podane liczby są równe");
}
else if (a > b) {
System.out.println("Pierwsza liczba jest większa");
}
else {
System.out.println("Druga liczba jest większa");
}
}
}
Wczytujemy dwie liczby przy pomocy klasy Scanner. Następnie sprawdzamy kolejno, czy są równe, jeśli nie to, czy pierwsza liczba jest większa, jeśli też nie to wiemy, że druga z liczb jest większa.
Dyskusja i komentarze
Masz pytania do tego wpisu? Może chcesz się podzielić spostrzeżeniami? Zapraszamy dyskusji na naszej grupie na Facebooku.
Poniżej znajdziesz archiwalne wpisy z czasów, gdy strona była jeszcze hobbystycznym blogiem.
YeeeZooo
Mój program wygląda tak, pominąłem zmienną "odczyt", czyli zastosowałem kompozycję, o której pisałeś w rozdz. "Zapis i odczyt z plików" import java.util.Scanner; public class TWar{ public static void main(String[] args){ System.out.println("podaj pierwsza liczbe"); int a = (new Scanner(System.in).nextInt()); System.out.println("podaj druga liczbe"); int b = (new Scanner(System.in).nextInt()); System.out.println("Podane liczby to "+a+" i "+b); if (a==b) System.out.println("Sa one takie same"); else if(a>b) System.out.println("Liczab1 jest wieksza od liczby2"); else System.out.println("Liczba2 jest wieksza od liczby1"); } }
Slawek
Poprawnie, ale ... :P Źle zrozumiałeś pojęcie kompozycji (zajrzę do artykułu i zapewne poprawię). Kompozycja polega na obudowywaniu innego obiektu. Czyli na przykład przekazywanie strumienia InputStream do obiektu BufferedReader: new BufferedReader(new InputStreamReader(System.in)). Pominięcia zmiennej odczyt nie nazwałbym więc kompozycją, utworzenie nowego obiektu przy użyciu słówka new też nie ma tutaj znaczenia. Dodatkowo zauważ, że akurat w tym przykładzie nie ma to znaczenia, ale Ty tworzysz 2 niezależne instancje klasy Scanner, a u mnie jest tylko jedna użyta dwa razy. W przypadku, gdybyśmy na przykład musieli odczytać nie 2 liczby a 100 000, to efektywność była by znacząco lepsza w wersji takiej jaką pokazałem. W wolnej chwili zabiorę się za temat powielania obiektów i usuwania niepotrzebnych referencji do obiektów :)
YeeeZooo
Myślę, że kompozycję dobrze opisałeś, ja uzyłem tu zbyt duzego skrótu myślowego i może też trochę potrzeba czasu aby to wszystko w głowie ułożyć. Faktycznie nie potrzebnie powołuję kilka instancji tej samej klasy ale nad tym też jeszcze nie panuję :) Swoją drogą mógłbyś jeszcze wyjaśnić jak to jest z tym new?
Slawek
Operator new zawsze tworzy nową, niezależną instancję klasy (obiekt utworzony za pomocą new zawsze zajmuje nowe miejsce w pamięci). Tak jak napisałem we wcześniejszym komentarzu unikanie powielania takiego samego obiektu, który możemy wykorzystać kilkukrotnie wpływa znacząco na złożoność pamięciową naszego programu. Istotne jest to szczególnie wtedy, gdy obiekt niesie ze sobą dużą ilość danych.
Rysiek
public class TestIf{ public static void main(String[] args){ Scanner odczyt = new Scanner(System.in); int a ; int b ; System.out.println("Podaj piewrszą liczbę:" ); int a = nextInt(); System.out.println("Podaj drugą liczbę:" ); int b = nextInt(); if(a==b) System.out.println("Są równe"); else System.out.println("Nie są równe"); else if(a>=b) System.out.println("Jak sądzisz?"); default: if(a<=b) System.out.println("Weź się nie odzywaj"); } } Co w tym jest nie tak?
EN
int b = nextInt(); -> int b = odczyt.nextInt();
mwarw
public class Porownanie{ public static void main(string[] args){ Scanner liczba = new Scanner(system.in); System.out.printnl("wybierz liczbe a"); Int a = liczba.nextInt(); System.out.printnl("liczba"+a+"zostanie porownana"); System.out.printnl("wybierz liczbe b"); Int b = liczba.nextInt(); if(a < b) System.out.printnl(a+""+b); } } -powie mi ktoś co ja takiego robię źl??
EN
Literówki, literówki import java.util.Scanner; public class Porownanie { public static void main(String[] args){ Scanner liczba = new Scanner(System.in); System.out.println("wybierz liczbe a"); int a = liczba.nextInt(); System.out.println("liczba"+a+"zostanie porownana"); System.out.println("wybierz liczbe b"); int b = liczba.nextInt(); if(a < b) System.out.println(a+"<"+b); else System.out.println("cośtam"); } }