Du kan bruge en do while løkke til at løse problemet på følgende måde
- import java.util.Scanner;
-
- public class Program {
-
- /**
- * @param args
- */
- public static void main(String[] args) {
- gaetEtTal();
-
- }
-
- public static void gaetEtTal () {
- Scanner myScanner = new Scanner(System.in);
-
- int c = 0;
- int b = 0;
-
- System.out.println("Gæt et tal ! ");
- int a = (int)( Math.random()*20+1);
-
- //Gør følgende hver gang at a ikke er lig med b
- do
- {
- b = myScanner.nextInt();
-
- if (a > b) {
- System.out.println("tallet jeg tænker på er større ");
- } else if (a < b) {
- System.out.println("tallet jeg tænker på er mindre end det");
- }
-
- c++;
- }
- while (a != b);
-
- System.out.println(" Du gættede det på " + c + " forsøg");
- System.out.println(b + "=" + a);
-
- }
- }
do-while løkken fungerer på den måde at den vil kører mindst en gang. teorien i den er at den siger gør følgende, og herefter gør den følgende statements (tjekker med if sætninger). herefter når den til hvis (while) delen, hvor den siger hvis a != b. du har altså while løkken som dit tredje if, som er den der skal stoppe løkken.
Umiddelbart ser jeg ikke en for løkke som den rigtige løkke, da du med en for løkke er afhængig af en counter, og dermed er nødt til at have et specifikt antal forsøg til at løse spillet. while løkken eller do while løkken kører indtil det rigtige svar er fundet.
Lige en sidebemærkning, er at du også kan benytte dig af klassen
Random, som ligger i java.util pakken, i stedet. Denne klasse kan arbejde direkte med integers, og man slipper derfor at lave en float om til en int.
- Random random = new Random();
-
- /*
- nextInt(number) metoden henter et tilfældigt tal imellem 0 og number-1.
- Det betyder at hvis jeg bruger metoden således nextInt(20), vil den give mig et tilfældigt
- tal imellem 0 og 19. for at få imellem 1 og 20 skal jeg efter jeg har fået et
- resultat lægge 1 til dens værdi.
- */
- random.nextInt(20) + 1;
Til sidst vil jeg give dig et godt råd, og det er at benytte variabel navne som er læselige. variabelnavne som a, b og c er hurtige, og sikkert også fine i små test eksempler, men det bliver hurtigt forvirrende og huske hvad variablen a nu engang skulle indeholde. Brug heller lidt tid til at navngive variablerne så de er lettere at forstå. f.eks. number1, number2 og count.
- public static void gaetEtTal () {
- Scanner myScanner = new Scanner(System.in);
-
- int count = 0;
- int number2 = 0;
-
- System.out.println("Gæt et tal ! ");
- int number1 = (int)( Math.random()*20+1);
-
- //Gør følgende hver gang at number1 ikke er lig med number2
- do
- {
- number2 = myScanner.nextInt();
-
- if (number1 > number2) {
- System.out.println("tallet jeg tænker på er større ");
- } else if (number1 < number2) {
- System.out.println("tallet jeg tænker på er mindre end det");
- }
-
- count++;
- }
- while (number1 != number2);
-
- System.out.println(" Du gættede det på " + count + " forsøg");
- System.out.println(number1 + "=" + number2);
-
- }
Indlæg senest redigeret d. 20.08.2013 22:44 af Bruger #4487