Bad operand types for binary operator '<' error issue (beginner)
Okay so my problem occurs when I am trying to compare numbers that I have sent into method. In all six cases, I get "error: bad operand types for binary operator '<' ", and is always pointing at the same "<" symbol.
Say the expression a<b<c, the error always occurs with the "<" between b and c.
Any help is greatly appreciated
Code Java:
import java.io.*;
import java.util.*;
public class Program1
{
public static void main( String args[])
{
int user_guess, com_guess, gameover=0;
Scanner scan = new Scanner(System.in);
Random rand = new Random();
System.out.println("Hello User...I want to play a game.\nA game you cannot possibly win\n\nEnter the lower bound: ");
int lower= scan.nextInt();
System.out.println("Enter the upper bound: ");
int upper= scan.nextInt();
if (lower>=upper)
{
System.out.println("\nBad");
System.exit(0);
}
int range=upper-lower;
int magic_number=rand.nextInt(range)+lower;
System.out.println("\nLET THE GAME BEGIN. MUHAHAHAHAH!!!\n\nThe magic number is between "+lower+" and "+upper+" inclusively" );
while(gameover<1)
{
System.out.println("Enter your guess: ");
user_guess=scan.nextInt();
com_guess=(upper+lower)/2;
System.out.println("\nMy guess is: "+com_guess);
if (user_guess<magic_number)
{
System.out.println("User guess is: LOW");
lower= user_adjust(lower, user_guess, magic_number);
}
else if (user_guess>magic_number)
{
System.out.println("User guess is: HIGH");
upper= user_adjust(upper, user_guess, magic_number);
}
else if (user_guess==magic_number)
{
System.out.println("IMPOSSIBLE!!! You win this round...");
gameover=1;
}
if (user_guess<magic_number)
{
System.out.println("My guess is: LOW");
lower= com_adjust(lower, com_guess, magic_number);
}
else if (com_guess>magic_number)
{
System.out.println("My guess is: HIGH");
upper= com_adjust(upper, com_guess, magic_number);
}
else if (com_guess==magic_number)
{
System.out.println("Aaaaand boom goes the dynamite. You lose.");
gameover=1;
}
}
System.out.println("THANKS FOR PLAYING. COME BACK SOON");
}
//*******************************************************************************************
// This is where the methods start
private static int user_adjust(int LU, int use, int ans)
{
if (LU < use < ans)
{
LU=use+1;
return LU;
}
else if (ans<use<LU)
{
LU=use-1;
return LU;
}
else if (use<LU<ans)
System.out.println("\nBlah\n");
else if (ans<LU<use)
System.out.println("\nBlah\n");
}
private static int com_adjust(int LU, int com, int ans)
{
if (LU<com<ans)
{
LU=com+1;
return LU;
}
else if (ans<com<LU)
{
LU=com-1;
return LU;
}
}
}
Re: Bad operand types for binary operator '<' error issue (beginner)
**Update**
I just added the following code to my main program, just to see if I would get the same error.
Code Java:
if (1<2<3)
System.out.println("Yay");
I got the exact same error, so I'm betting whatever my problem is, it is something very basic
Re: Bad operand types for binary operator '<' error issue (beginner)
You can't write 1<2<3 as you would in mathematics. You have to spell out what you mean:
Code :
if(1 < 2 && 2 < 3) {
System.out.println("Yay");
}
Re: Bad operand types for binary operator '<' error issue (beginner)
Re: Bad operand types for binary operator '<' error issue (beginner)
Re: Bad operand types for binary operator '<' error issue (beginner)
Hey pbrockway2, thanks for you help too!
I've been following you and mju516 and I had the same problem too, which I fixed (below)...
import java.util.Scanner; // program uses class scanner
public class ThreeIntegerSumAvgProductSmallLarge
{
public static void main ( String args [] )
{
Scanner consoleScanner = new Scanner ( System.in );
int number1,
number2,
number3,
sum,
average,
product,
smallest = 0,
largest = 0;
System.out.print ( "Please enter 1st integer: " );
number1 = consoleScanner.nextInt ();
System.out.print ( "\nPlease enter 2nd integer: \n" );
number2 = consoleScanner.nextInt ();
System.out.print ( "Please enter 3rd integer: \n" );
number3 = consoleScanner.nextInt ();
sum = number1 + number2 + number3;
average = ( ( number1 * number2 * number3 ) / 3 );
product = number1 * number2 * number3;
if ( number1 > number2 && number2 > number3 )
largest = number1;
if ( number2 > number1 && number1 > number3 )
largest = number2;
if ( number3 > number2 && number2 > number1 )
largest = number3;
if ( number1 < number2 && number2 < number3 )
smallest = number1;
if ( number2 < number1 && number1 < number3 )
smallest = number2;
if ( number3 < number2 && number2 < number1 )
smallest = number3;
System.out.printf ( "%s%d\n", "The sum of your three numbers is: ", sum );
System.out.printf ( "%s%d\n", "The product of your three numbers is: ", product );
System.out.printf ( "%s%d\n", "Your three numbers produced an average of: ", average );
System.out.printf ( "\n%s%d\n", "The largest number out of the three is: ", largest );
System.out.printf ( "%s%d\n", "The smallest number out of the three is: ", smallest );
}
However, now I'm trying to compare five numbers and print out the largest and the smallest (just like the one above), but now it's not working (below)....
import java.util.Scanner; // Program uses the Scanner class
public class Exercise2_24
{
public static void main ( String args [] )
{
Scanner numberScanner = new Scanner ( System.in );
int int1,
int2,
int3,
int4,
int5,
big = 0,
small = 0;
System.out.print ( "Please enter the first integer: " );
int1 = numberScanner.nextInt ();
System.out.print ( "\nPlease enter the second integer: " );
int2 = numberScanner.nextInt ();
System.out.print ( "\nPlease enter the third integer: " );
int3 = numberScanner.nextInt ();
System.out.print ( "\nPlease enter the fourth integer: " );
int4 = numberScanner.nextInt ();
System.out.print ( "\nPlease enter the fifth integer: " );
int5 = numberScanner.nextInt ();
if ( int1 > int2 && int2 > int3 && int2 > int4 && int2 > int5 ) big = int1;
if ( int2 > int3 && int3 > int4 && int3 > int5 && int3 > int1 ) big = int2;
if ( int3 > int4 && int4 > int5 && int4 > int1 && int4 > int2 ) big = int3;
if ( int4 > int5 && int5 > int1 && int5 > int2 && int5 > int3 ) big = int4;
if ( int5 > int1 && int1 > int2 && int1 > int3 && int1 > int4 ) big = int5;
if ( int1 < int2 && int2 < int3 && int3 < int4 && int4 < int5 ) small = int1;
if ( int2 < int3 && int3 < int4 && int4 < int5 && int5 < int1 ) small = int2;
if ( int3 < int4 && int4 < int5 && int5 < int1 && int1 < int2 ) small = int3;
if ( int4 < int5 && int5 < int1 && int1 < int2 && int2 < int3 ) small = int4;
if ( int5 < int1 && int1 < int2 && int2 < int3 && int3 < int4 ) small = int5;
System.out.printf ( "\nThe largest number entered is: %d", big );
System.out.printf ( "\nThe smallest number entered is: %d", small );
}
}
I compared this incorrect code with the one that works correctly (the 3 number one)....I don't see any noticeable errors. I'm thinking that I'm incorrect with how I "spelled out" what I meant in comparing the 5 five numbers in order to obtain the biggest and largest number, and I even changed that up in the if statements for the 'big variable, but that didn't work.
There's no compile time errors, it's run time, and most times I run the program, I don't get the correct big and small numbers to print out. Sometimes I get just a 0 for either small or large number that is printed out. It's like after the 'big' and 'small' variables are initialized to 0, the if statements are not assignments any numbers to them.
Please help...thanks!
Re: Bad operand types for binary operator '<' error issue (beginner)
Quote:
Code :
if ( int1 > int2 && int2 > int3 && int2 > int4 && int2 > int5 ) big = int1;
Think what it means for int1 to be the biggest. You are comparing int2 with int3 etc. But none of those comparisons matter. What matters is this: int1 should be bigger than everything else - bigger than int2, bigger than int3 etc.
Try to translate "bigger than everything else" into a condition with "ands".
-----
Let's hope you don't need to find the biggest of 42 things or you might want to rethink the approach slightly! But for now you should be able to get the right condition for each of the if statements.
Also you might want to look at the values of the average that are being produced.
-----
It would have been a good idea to start a new thread for your question - even if this one helped you along your way. What I'm thinking is that people will see that the thread is marked "solved" and may well not bother to read it.
Re: Bad operand types for binary operator '<' error issue (beginner)
Oops! Thanks for finding the bug in the average. I guess I should've tested with more numbers other than 1, 2, and 3 since both the sum and product would be the same. I posted the corrections below...
As the other code, I've noticed several ways to make it work (like with counters and arrays); however, the workbook that I'm getting the exercise from stated to only use what was learned from the chapter...and I tried with using the &&s again, like..
Code Java:
if ( int1 > int2 && int1 > int3 && int1 > int4 && int1 > int5 ) big = int1;
but that didn't work...fortunately, I did find the answer after more searching...and I'm gonna post it in a new thread as you suggested...although, I would like to see how you can do the same thing with the ands...thanks again!
Code Java:
import java.util.Scanner; // program uses class scanner
public class ThreeIntegerSumAvgProductSmallLarge
{
public static void main ( String args [] )
{
Scanner consoleScanner = new Scanner ( System.in );
int number1,
number2,
number3,
sum,
average,
product,
smallest = 0,
largest = 0;
System.out.print ( "Please enter 1st integer: " );
number1 = consoleScanner.nextInt ();
System.out.print ( "\nPlease enter 2nd integer: \n" );
number2 = consoleScanner.nextInt ();
System.out.print ( "Please enter 3rd integer: \n" );
number3 = consoleScanner.nextInt ();
sum = number1 + number2 + number3;
average = ( ( number1 + number2 + number3 ) / 3 );
product = number1 * number2 * number3;
if ( number1 > number2 && number2 > number3 )
largest = number1;
if ( number2 > number1 && number1 > number3 )
largest = number2;
if ( number3 > number2 && number2 > number1 )
largest = number3;
if ( number1 < number2 && number2 < number3 )
smallest = number1;
if ( number2 < number1 && number1 < number3 )
smallest = number2;
if ( number3 < number2 && number2 < number1 )
smallest = number3;
System.out.printf ( "%s%d\n", "The sum of your three numbers is: ", sum );
System.out.printf ( "%s%d\n", "The product of your three numbers is: ", product );
System.out.printf ( "%s%d\n", "Your three numbers produced an average of: ", average );
System.out.printf ( "\n%s%d\n", "The largest number out of the three is: ", largest );
System.out.printf ( "%s%d\n", "The smallest number out of the three is: ", smallest );
} // end method main
}