Własny kalkulator w javie

0

Witam zacznam zabawę z javą. Na początek pojechałem sobie z prostym kalkulatorem. Wygląda tak:

import java.util.Scanner;
public class SwojKalkulator {
	
	 static int licznik = 0;

	public static void main(String[] args) {
		
		
		Scanner sc = new Scanner(System.in);
		
		System.out.println("Wprowadź pierwszą liczbe:");
		int liczba1 = sc.nextInt();
		System.out.println("Wprowadź drugą liczbę:");
		int liczba2 = sc.nextInt();
			
		
		System.out.println("Wprowadz operator");
		char znak = sc.next().charAt(0);
		
		switch(znak){
		case '+':
			System.out.println("Rezultat " +liczba1 + '+' +liczba2 + '=' +(liczba1+liczba2));
			licznik++;
			break;
			
		case '-':
			System.out.println("Rezultat " +liczba1 + '-' +liczba2 + '=' +(liczba1-liczba2));
			licznik++;
			break;
			
		case '*':
			System.out.println("Rezultat " +liczba1 + '*' +liczba2 + '=' +(liczba1*liczba2));
			licznik++;
			break;
			
		case '/':
			System.out.println("Rezultat " +liczba1 + '/' +liczba2 + '=' +(liczba1/liczba2));
			licznik++;
			break;
			
		
		}
			
			System.out.println("\nIlosc wykonanych dzialan " +licznik);
			sc.close();
		

	}
	

}

Podpowiedzcie mi jak zrobić żeby po wykonaniu działania np. dodawania program wracał znów do pobierania danych od użytkownika. Uzyłbym goto ale przecież nie ma w javie takiego czegoś. Proszę o podpowiedź.

0

Nie wiem też czy dobrze zrozumiałem polecenie ale jeszcze dopytam, a oto ono:

Klasa powinna w zmiennej statycznej przechowywać informacje o liczbie wykonanych operacji.

0

Pętla

while(true)
{ 
...

  default:
    break;
}

Użytkownik wyjdzie z pętli jeśli wpisze coś innego niż =-/*.
Powinieneś jeszcze się zabezpieczyć przed dzieleniem przez zero.

0

W wyniku tego co ty mi podpowiedziałeś powstaje pętla nieskończona

0

Masz rację

boolean ok = true;
while(ok)
{ 
...
 
  default:
    ok = false;
}
0

To samo. Nie wiem może ja to źle wstawiam, spójrz:

boolean ok = true;
		
		
		while(ok){ 
		switch(znak){
		case '+':
			System.out.println("Rezultat " +liczba1 + '+' +liczba2 + '=' +(liczba1+liczba2));
			licznik++;
			break;
			
		case '-':
			System.out.println("Rezultat " +liczba1 + '-' +liczba2 + '=' +(liczba1-liczba2));
			licznik++;
			break;
			
		case '*':
			System.out.println("Rezultat " +liczba1 + '*' +liczba2 + '=' +(liczba1*liczba2));
			licznik++;
			break;
			
		case '/':
			System.out.println("Rezultat " +liczba1 + '/' +liczba2 + '=' +(liczba1/liczba2));
			licznik++;
			break;
			
		default:
		    ok = false;
			
		
			}
		
			
			System.out.println("\nIlosc wykonanych dzialan " +licznik);
			sc.close();
		

	}
1

Źle wstawiłeś

        Scanner sc = new Scanner(System.in);
        boolean ok = true;
        while(ok)
        {
            System.out.println("Wprowadź pierwszą liczbe:");
            int liczba1 = sc.nextInt();
            System.out.println("Wprowadź drugą liczbę:");
            int liczba2 = sc.nextInt();
 
 
            System.out.println("Wprowadz operator");
            char znak = sc.next().charAt(0);
 
            switch(znak){
                case '+':
                        System.out.println("Rezultat " +liczba1 + '+' +liczba2 + '=' +(liczba1+liczba2));
                        licznik++;
                        break;
 
                case '-':
                        System.out.println("Rezultat " +liczba1 + '-' +liczba2 + '=' +(liczba1-liczba2));
                        licznik++;
                        break;
 
                case '*':
                        System.out.println("Rezultat " +liczba1 + '*' +liczba2 + '=' +(liczba1*liczba2));
                        licznik++;
                        break;
 
                case '/':
                        System.out.println("Rezultat " +liczba1 + '/' +liczba2 + '=' +(liczba1/liczba2));
                        licznik++;
                        break;
                default:
                    ok = false;
 
                }
        }
0

Ano właśnie, przepraszam za zamieszanie. Kombinowałem też z tym zerem żeby przy dzieleniu jakiś if wstawić albo coś, ale nie działa. Podpowiesz mi jak to rozwiązać tak żeby dodawać odejmować i mnożyć dało rade a już dzielić nie ?

0

OK już sobie poradziłem. Dzięki za pomoc. Po prostu wystarczyło sprawdzić czy 2 liczba jest równa zero czy nie if - else i odpowiednie println.

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