0

Beginner Java coder here, I have a simple Scanner application that takes user input. I want to put an if statement to prevent the user from putting negative values into the scanner, or at least get an error message when they do so.

I have tried to put an if statement that if the number > 0 then the code executes, else displays an error message. This seems to work when testing for x, but not for x OR y.

 if (x >= 0 || y >= 0){ System.out.println("Sum of x+y = " + z); if (x == y) { System.out.println("x and y are equal"); } else { System.out.println("x and y are not equal"); System.out.println("Counting from 0 to " + x); for (int i = 0; i <= x; i++) { System.out.print(i + " "); } 
1
  • 5
    Seems like you are missing end brackets. Commented Sep 23, 2019 at 21:22

4 Answers 4

4

You seem to be posting a code fragment, because the brackets don't match up. Plus, you don't show any code that prints an error message.

But the main point of your question seems to be about a logic problem, not a syntax error with the code. So I'll pretend the syntax errors aren't there (although you do need to fix them). The logic problem seems to be here:

if (x >= 0 || y >= 0) { // all is good } else { // print error message } 

This test will succeed if either x or y is non-negative. From your description, you want the test to fail if either is negative. For that, you need to either reverse the sense of the tests:

if (x < 0 || y < 0) { // print error message } else { // all is good } 

or else use AND instead of OR:

if (x >= 0 && y >= 0) { // all is good } else { // print error message } 
Sign up to request clarification or add additional context in comments.

Comments

3

If you want both numbers to be >=0 you should use AND instead of OR. If x is -5 but y is 7, the code will execute, but your counting from 0 to -5 will be pointless.

Comments

0

I recommend you use else if as opposed to 2 'if's, for example

 If (x >= 0 || y >= 0){ //your code } else if (x == y) { //your code } else { //your code } 

Comments

0

A better way to continuously prevent the user from inputting negative numbers would be:

Scanner in = new Scanner(System.in); int x, y; do { System.out.println("Input x:"); x = in.nextInt(); System.out.println("Input y:"); y = in.nextInt(); } while (x < 0 || y < 0); 

This do-while loop will ask for inputs until both x and y are positive integers. I'm not sure if this is what you wanted to achieve but that's what I gathered from your question since you said you wanted to use an if statement to prevent negative input.

Other than that, you're missing closing curly brackets like a couple people said already, but your code snippet looks incomplete. For future reference, please include more of your code for people to work from and/or the exceptions you get when trying to run your code.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.