Kalkulator z użyciem skanera, nie moge wpisywać...

0

Witam,
po pytaniu "podaj pierwszą liczbę" i drugą też wszystko dziala, można wpisywać, ale przy operatorze nie mogę....

package kalkulator;

import java.util.Scanner;

public class program {

public static void main(String[] args) {
	String operator;
	int liczba1;
	int liczba2;
	float wynik;
	
	System.out.println("podaj pierwszą liczbę:");
	
	Scanner skaner = new Scanner(System.in);
	
	liczba1 = skaner.nextInt();
	
	System.out.println("podaj drugą liczbę:");
	liczba2 = skaner.nextInt();

	System.out.println("Podaj oeprator: '*' '/' '+' '-'");
	 operator = skaner.nextLine();
	
	
	if(operator == "-") {
		wynik = liczba1 - liczba2;
		System.out.println("twoj wynik to " + wynik);
	}
	else if(operator == "-") {
		
		wynik = liczba1 * liczba2;
		System.out.println("twoj wynik to " + wynik);
	}
	else if(operator == "/") {
		wynik = liczba1 / liczba2;
		System.out.println("twoj wynik to " + wynik);
	}
	else if(operator == "+") {
		wynik = liczba1 + liczba2;
		System.out.println("twoj wynik to " + wynik);
	}
	
	
	
	
}

}

0

Nie używaj == do porównywania String - używaj .equals:

if (operator.equals("-")) { ... }

Problem jest taki że nextInt() zostawia znak nowej linii w buforze na który czeka nextLine(), a ten gdy go otrzyma zwraca wpisany przez użytkownika tekst.
Najprostsze rozwiązanie - dodaj jeszcze jeden skaner.nextLine() przed pobraniem operatora:

skaner.nextLine();
System.out.println("Podaj oeprator: '*' '/' '+' '-'");
operator = skaner.nextLine();
0
atmal napisał(a):

Nie używaj == do porównywania String - używaj .equals:

if (operator.equals("-")) { ... }

Problem jest taki że nextInt() zostawia znak nowej linii w buforze na który czeka nextLine(), a ten gdy go otrzyma zwraca wpisany przez użytkownika tekst.
Najprostsze rozwiązanie - dodaj jeszcze jeden skaner.nextLine() przed pobraniem operatora:

skaner.nextLine();
System.out.println("Podaj oeprator: '*' '/' '+' '-'");
operator = skaner.nextLine();

uuuuu.... dzięki, nie mam pojęcia dlaczego tak jest, ale dzięki ;D

1

uuuuu.... dzięki, nie mam pojęcia dlaczego tak jest, ale dzięki ;D

Operator == porównuje referencje, sprawdza czy te dwa obiekty (typu String w tym przypadku) znajdują się pod tym samym adresem w pamięci).
Natomiast equals() porównuje zawartość obiektów.

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