This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
I am facing problem with looping statement in my code, this code is for displaying even or odd numbers whatever user will input. Working fine but when I want it to ask for input next number it got failed. Explained below:
1. Console --> Please enter no:
2. User --> 25
3. console --> Even
4. console --> Do you want to continue?
5. User --> Yes
6. //Will repeat same//
7. Console -->Do you want to continue?
8. User --> No
9. //Program Should exit//
I have pasted my code here, please suggest me what to do?
Since your "oK" variable is used only once in the program, it's perfectly fine to use the literal string in place. Line 22 can be
Also, you would do well to give a better name than "scnr" -- why are you afraid of vowels? There's no prize for abbreviating variable names. There is a penalty though: "scnr" is much harder to read than "scanner". Besides, you've already declared that variable as a Scanner, why repeat yourself? A name like "userInput" conveys the purpose much better, don't you think?
Avinash Oak wrote:But can it prompt for "enter number" again after user entered a non-numeric value?
I think part of your problem is that all your code is in one place. Why not write a method that prompts the user to enter a number, keeps looping until they do, and then returns it when they finally get it right? Maybe something like:(I leave the implementation up to you ).
Then in your main() method, all you have to do is:
num = enterNumber(userInput, "Please enter no:");
Isn't it funny how there's always time and money enough to do it WRONG?
Articles by Winston can be found here
Don't use quote tags round the whole post. I shall remove them.
You do not want to create new objects just to call a method on. What is more, the getEvenValue method does not do what it says on the tin. It simply prints a message. So why have you got it at all? I can see no point to it.
You have a very poor name for your class: Journal4. You also have a very poor structure to your for loop; I have never seen anybody use % 1 before.
What you want is to start the loop and run it once, getting input as you go. There is a special type of loop which does that. Then you can put the text in the place you want it: the end of the loop.
Joined: Jul 04, 2015
sorry about the quote tags, i didn't know.
that what i'm trying to figure out how to make the proper for loop to end it.
i just named the class journal 4 because thats the homework assignment.
the val%1 seems to end it just fine. it keeps asking for numbers and once an even number is entered it stops the program and outputs you entered an even number.
i have to use the method getEvanValue which is the other part i'm trying to understand.
Joined: Oct 13, 2005
No, i % 1 == 0 does not terminate the loop. Whichever integer number you put to the left of the % you will always get 0 as the remainder, so you might as well write while (true).... There is a difference between code which works and good code. There is a type of loop which will run once then repeat if a certain condition is fulfilled. Remind yourself about the different types of flow control in the Java™ Tutorials.