Varför måste jag skriva in q två gånger istället för 1.

Permalänk

Varför måste jag skriva in q två gånger istället för 1.

Varför måste jag skriva in q två gånger istället för 1 för att progammet ska stoppas?

import java.util.Scanner; public class Utskrift { // Om det större talet alltid ska vara täljaren kommer jag aldrig få resultatet // 6/7 eftersom 7 kommer byta plats med 6, 6/7 = 6/7; 7/6 = 1 1/6; public static int fraction(int nominator, int denominator) { if (nominator == 0) { return 0; } else if (denominator == 0) { return 0; } else if (nominator > denominator) { int top = nominator / denominator; return top; } else if (nominator < denominator) { int bot = denominator / nominator; return bot; } return nominator; } public static int sgd(int a, int b) { if (a == 0) { } else if (b == 0) { } else { int c = fraction(a, b); if (a > b) { int d = a - b * c; return d; } else if (a < b) { int d = b - a * c; return d; } } return 0; } static void printFraction(int[] parts) { if (parts[0] == 0) { System.out.print("Error"); } else if (parts[0] > 0) { System.out.print(parts[0] + " "); } else System.out.print(""); if (parts[1] > 0) { System.out.print(parts[1] + "/" + parts[2]); } else System.out.print(""); } static Scanner sc = new Scanner(System.in); public static void main(String[] args) { while (true) { String nominator = sc.next(); String denominator = sc.next(); if (nominator.equals("q")) { break; } else if (denominator.equals("q")) { break; } else { int intNominator = Integer.parseInt(nominator); int intDenominator = Integer.parseInt(denominator); int printFraction0 = fraction(intNominator, intDenominator); int printSgd = sgd(intNominator, intDenominator); System.out.print("\n" + intNominator + "/" + intDenominator + " = "); // Borde man skriva in hur talen först inmatades eller efter talen // möjligtvis // bytt plats? printFraction(new int[] { printFraction0, printSgd, intDenominator }); } } } }

Visa signatur

Så jag kommer ihåg. [code][/code]

Permalänk
Medlem

String nominator = sc.next();
String denominator = sc.next();
if (nominator.equals("q")) {
break;
}

Du frågar 2 gånger

String nominator = sc.next();

if (nominator.equals("q")) {
break;
}

String denominator = sc.next();

Löser det

Permalänk
Medlem

Precis som maximm skriver ovan. Du frågar efter 2 strängar först innan du utvärderar om den första är q eller ej. Fråga efter en i taget med en "if q break" efter var istället.

Permalänk
Skrivet av maximm:

String nominator = sc.next();
String denominator = sc.next();
if (nominator.equals("q")) {
break;
}

Du frågar 2 gånger

String nominator = sc.next();

if (nominator.equals("q")) {
break;
}

String denominator = sc.next();

Löser det

Tackar.

Visa signatur

Så jag kommer ihåg. [code][/code]