Just nu i M3-nätverket
Gå till innehåll

Programmet fungerar ej!


M.Mever

Rekommendera Poster

Hej, jag har problem med ett program som jag skrivit i Java.

Jag använder mig av programmet Eclipse.

 

Programmet är ett "gissa talet"-program mellan 0-100.

 

Användaren har endast 7 försök på sig att gissa rätt, och får då vägledning genom att det sker utskrifter om han är över eller under talet.

 

Problemet är bara att programmet avslutas när jag har tre försök kvar jämt. Vet jag talet i förväg, och gissar rätt på försök 2 typ så e det ok, men har jag använt 4 försök och borde ha tre kvar så avslutas programmet..... och jag vet inte varför.

 

Mitt krav är endast att koden i main inte får ändras. Den är Fast så att säga. Hoppas ngn kan hjälpa mig eller peka i riktningen mot problemet..

 

Tacksam för svar.

 

//MEver

 

import java.util.Scanner;

public class Steg2_Lab04 {

/**
 * @param args
 */
public static void main(String[] args) {
	// TODO Auto-generated method stub

	SecretNumber secretNumber = new SecretNumber(); 
	Scanner in = new Scanner(System.in); 
	System.out.println("Gissa ett tal mellan 0-100: "); 


	for (int i = 0; i < SecretNumber.MAX_NUMBER_OF_GUESSES; ++i) 
	{ 
		if (secretNumber.makeGuess(in.nextInt())) 
		{ 
			break; 
		}
	} 
} 
} 

class SecretNumber 
{ 
public static int MAX_NUMBER_OF_GUESSES = 7;
private int secretNumber = (int) (Math.random() * 101);
private static int number = 0;

public static int getNumber()
{
	return number;

}

public boolean makeGuess(int guess)
{
	//Här ska vi då kontrollera användarens gissning med slumptalet
	//System.out.print("Det rätta talet är " + secretNumber + "\n");
	//System.out.print(secretNumber);
	//System.out.print("Gissningar" + MAX_NUMBER_OF_GUESSES);

	if (MAX_NUMBER_OF_GUESSES != 0)
	{
		MAX_NUMBER_OF_GUESSES--;
		if (guess < secretNumber)
		{

				//I denna så har användaren gissat ett tal som är mindre än slumptalet
				//MAX_NUMBER_OF_GUESSES--;
				System.out.print(guess + " är för lågt. Du har " + MAX_NUMBER_OF_GUESSES + " gissningar kvar");
				return false;

		}

		else if (guess > secretNumber)
		{

				//I denna så har användaren gissat ett tal som är större än slumptalet

				System.out.print(guess + " är för högt. Du har " + MAX_NUMBER_OF_GUESSES + " gissningar kvar");
				return false;

		else
		{		

			System.out.print(guess + " är korrekt, Grattis!" + "Du har " + MAX_NUMBER_OF_GUESSES + " gissningar kvar");
			return true;
		}
	}
	else
	{
		//Nu skall då räknaren nått 0.
		System.out.print("Du har använt dina sju försök");
		return true;
	}	
}
}

 

Länk till kommentar
Dela på andra webbplatser

I main så krävs det väl att MAX_NUMBER_OF_GUESSES är 7 men i makeGuess så minskar du värdet med ett, vilket ju är fel för något som är skrivet med stora bokstäver och ska vara en konstant. Du har en int som heter number och som aldrig används.

 

Länk till kommentar
Dela på andra webbplatser

Tack så mkt. Behövdes ett par fräscha ögon på det där ser ja :)

nu fungerade det. Använde number.

 

Tackar!!

 

//Mever

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...