Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

neelvaka

macrumors newbie
Original poster
Sep 15, 2007
16
0
Code:
import java.io.*;

 

public class Playself

{

 

 

public static void main(String args[]) throws IOException, NumberFormatException

{
	int x = (int)(1000 * Math.random()) + 1;
	int g1, g2, g3, g4, g5, g6, g7, g8, g9, g10;
	
int timesplayed;

int max;

int min;

double average;

BufferedReader IN = new BufferedReader(new InputStreamReader(System.in));

 

 

int upper, lo, hi, count, guess;

boolean again = false;

String input;

 

 

timesplayed = 0;

max = 0;

min = 0;

average = 0;

 

 

System.out.println(" Guessing Game ");

 

 

do

{

 

timesplayed++;

 

 

do

{

System.out.print("\nWould you like to view the instructions, (y)es or (n)o? ");

input = IN.readLine();

 

if (input.equals("y") || input.equals("Y"))

{

System.out.println("\n\tYou will set an upper bound and think of a number between");

System.out.println("\t1 and that number. I will try to guess your number in as");

System.out.println("\tfew guesses as possible.");

}

 

} while (!(input.equals("y") || input.equals("Y") || input.equals("n") || input.equals("N")));

 

System.out.print("\nEnter the upper bound: ");

upper = Integer.parseInt(IN.readLine());

System.out.println();

 

count = 0;

lo = 1;

hi = upper;

guess = (upper / 2);

 

 

do {

System.out.print("\tMy guess is " + (hi+lo)/2 + ". Is that (l)ow, (h)igh, or (c)orrect? ");

input = IN.readLine();

if ((hi+lo)/2 == hi || (hi+lo)/2 == lo) {

System.out.println("\tCHEATER!!!!!!!!!!!!!!!!!!!!!!!!!!!");

break; }

count++;

switch(input.charAt(0)){

case 'l':

case 'L':

lo = (hi + lo) / 2;

break;

case 'h':

case 'H':

hi = (hi + lo) / 2;

break;

case 'c':

case 'C':

System.out.println("\n\tI guessed your number in only " + count + " tries!");

System.out.println("\nThank you for playing Guessing Game.");

break;

}

 

} while (!(input.equals("c") || input.equals("C")));

 

 

System.out.print("\nPlay again? (Y)es or (N)o: ");

String goAgain = IN.readLine();

 

if (goAgain.equals("y") || goAgain.equals("Y"))

{

again = true;

}

else

{

again = false;

}

if (timesplayed == 1)

{

max = count;

min = count;

average = count;

}

else

{

if (count > max)

{

max = count;

}

else if (count < min)

{

min = count;

}

average = (timesplayed - 1 * average) + count / timesplayed;

}

} while (again == true);

System.out.println("\nThank you for playing Guessing Game!");

System.out.println("\nStatistics:");

{

System.out.println("\n\tTimes played: " + timesplayed);

System.out.println("\tLowest number of guesses: " + min + " guesses.");

System.out.println("\tHighest number of guesses: " + max + " guesses.");

System.out.println("\tAverage number of guesses: " + average + " guesses.");

}

}

}
Thats wat i have so far and i have to get it so that that the computer picks a number between 1 and 1000 and the computer has to play against itself to find that number.
After it has chosen the number the comp will ask the comp guess my number. the comp should guess a random number to start with and comp will say low high or correct. It should also say how amny times it took.

so yeah i need some advice like where to start. PLZ DONT GIMME THE WHOLE CODE i wnna try this myself since i have the weekend to do it (today and tomorrow). If you want snippets of code are helped but yeah i just really want to no where to start and what i should do im very confused.
 

angelwatt

Moderator emeritus
Aug 16, 2005
7,852
9
USA
It's really no different than your last assignment except you aren't doing the guessing. Now, instead of having code to take your guess you setup some simple logic to make guesses based on whether the last guess was low or high. It really shouldn't be any harder than your last assignment.

Work on it and if you come to a specific issue discuss that here. It's just very broad at this point.
 

neelvaka

macrumors newbie
Original poster
Sep 15, 2007
16
0
It's really no different than your last assignment except you aren't doing the guessing. Now, instead of having code to take your guess you setup some simple logic to make guesses based on whether the last guess was low or high. It really shouldn't be any harder than your last assignment.

Work on it and if you come to a specific issue discuss that here. It's just very broad at this point.

any way u can help me about where to start?
 

Mac Player

macrumors regular
Jan 19, 2006
225
0
1) Break your code in methods
2) Use equalsIgnoreCase()
3) Dont decrlare so many variables at the beggining.
4) Dont use multiple println() for the same line instead break the code and use \n
5) Use object oriented design.
6) Your computer will gess the number in a maximum of log n times.
 

angelwatt

Moderator emeritus
Aug 16, 2005
7,852
9
USA
any way u can help me about where to start?

Forums aren't meant to hold your hand through your class. If you need this much help you really need to talk to your instructor and/or TA about your trouble. Maybe you're just not meant to be a programmer. There's nothing wrong with asking questions, but you really need to study.
 

neelvaka

macrumors newbie
Original poster
Sep 15, 2007
16
0
look im not here 4 sum1 to hold my hand ok? and i did this so far:
Code:
public class Playself {
        public static void main(String args[]) {
       
          int upper, lo, hi, numGuessToFind, min, max, avg, iNumPlayed = 0, guess, number, a, b, c, d, e, f, g, h, j;
        
          min = 10000;
         max = 0;
         avg = 0;
              
         for (int i = 0; i < 10; i++)
         
        
        
         System.out.println("________________");
         System.out.println("\\               \\");
         System.out.println(" \\ Guessing Game \\");
         System.out.println("  \\_______________\\");
        
         do{
          upper = 1000;
          guess = upper / 2;
          number = (int) (Math.random () * 1000) + 1;
          iNumPlayed++;
          numGuessToFind = 0;
          lo = 1;
          hi = upper;
          do {
                 System.out.println("\tMy guess is " + guess );

                 if (guess < number) {
                         numGuessToFind = numGuessToFind + 1
                         ;
                         lo = guess;
                         guess = (hi + lo) / 2;
                 }else{
                 if (guess > number) {
                	 numGuessToFind = numGuessToFind +1;
                         hi = guess;
                         
                         guess = (hi + lo) / 2;
                 }else{
                     if (guess == number)  {
                    	 numGuessToFind = numGuessToFind + 1;
                          System.out.println("\n\tI guessed my number in only " + numGuessToFind + " tries!");
                          avg += numGuessToFind;
                         if (numGuessToFind<min){
                                 {min = numGuessToFind;}
                         }
                         if (numGuessToFind > max){
                                 {max = numGuessToFind;}
                         }
                          System.out.println("\nThank you for playing Guessing Game.");   
                         
                     }
                } while ( ! (number == guess) );
         
        
         
         } while (! (iNumPlayed == 10));
                 
                System.out.println("\nHow many times played: " + iNumPlayed);
                System.out.println("The average number of guesses I made: " + (avg / iNumPlayed));
                System.out.println("The highest guesses I made: " + max);
                System.out.println("The lowest guesses I made: " + min);
                
            
              
                
                }          
        }

but one prob
Exception in thread "main" java.lang.Error: Unresolved compilation problems:
Syntax error, insert "while ( Expression ) ;" to complete DoStatement
Syntax error, insert "while ( Expression ) ;" to complete DoStatement
Syntax error, insert "}" to complete MethodBody

at Playself.main(Playself.java:69)


it says that
and it says the last two curlys are the prob? this is the only problem i have so what should i do?
 

plinden

macrumors 601
Apr 8, 2004
4,029
142
You're missing a couple of "}" in the middle of the program. I'll leave it as an exercise for to find where (hint, check that all your "{" have a closing bracket).

I would also like to point you to the Java Coding Conventions. I know lots of people think that adhering to a standard is trivial as long as the program works, but applying consistent naming and indentation in particular makes it a lot easier for everyone, including yourself, to understand what a program does, and to find out what's causing problems like you one you're having here.

I was able to work out where the problem was only by re-indenting your code. If I were you I would make it a priority to get into a habit of using these conventions.
 

savar

macrumors 68000
Jun 6, 2003
1,950
0
District of Columbia
I would also like to point you to the Java Coding Conventions. I know lots of people think that adhering to a standard is trivial as long as the program works, but applying consistent naming and indentation in particular makes it a lot easier for everyone, including yourself, to understand what a program does, and to find out what's causing problems like you one you're having here.

God, I wish some of my coworkers would read that.

Good advice for the new programmer to learn. When you format your code correctly, syntax errors become painfully obvious. In fact, you'll make fewer of them to begin with. Sadly most people take the approach of, "I'll just randomly add braces here and there until it compiles." Which usually results in, "it compiles, but it doesn't work, help me!"
 

angelwatt

Moderator emeritus
Aug 16, 2005
7,852
9
USA

Like the others said, format the code. I use to use Eclipse and I remember it can format the code for you, but I don't remember where the command is and I don't have it installed on my machine. It also allows you to give rules on how to format the code in the preferences. This would be very beneficial for you so give it a look.
 

plinden

macrumors 601
Apr 8, 2004
4,029
142
Like the others said, format the code. I use to use Eclipse and I remember it can format the code for you, but I don't remember where the command is ...

Select all (Cmd-A) followed by Cmd-I (replace Cmd with Ctrl if you're not using OS X).
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.