Hello i was curious is there any alternative way to make this code short but also it will loop the program when the input is met in "Enter 1 continue" i want the code reading faster because its too long and i want to make it short because so the program will run faster
System.out.print("Enter first number: ");
fnum = sc.nextInt();
System.out.print("Enter second number: ");
snum = sc.nextInt();
if (fnum <= snum) {
while (fnum <= snum) {
System.out.println(fnum);
fnum ;
}
} else {
while (fnum >= snum) {
System.out.println(fnum);
fnum--;
}
}
do {
System.out.print("Enter 1 to continute, enter any number to end: ");
enter = sc.nextInt();
if (enter == 1) {
System.out.print("Enter first number: ");
fnum = sc.nextInt();
System.out.print("Enter second number: ");
snum = sc.nextInt();
if (fnum <= snum) {
while (fnum <= snum) {
System.out.println(fnum);
fnum ;
}
} else {
while (fnum >= snum) {
System.out.println(fnum);
fnum--;
}
}
} else {
System.out.println("************************************************");
System.out.println("************************************************");
System.out.println("******************Thank you*********************");
System.out.println("************************************************");
System.out.println("************************************************");
System.exit(0);
}
} while (enter == 1);
} }
CodePudding user response:
The first step would be to think about what it is you want to repeat. Regardless of what the user wants to do, you want to execute the loop at least once, so a do-while
is perfect.
Once the user has input the first two values, you then want to prompt the user to determine if they want to continue or not, this forms part of your exit condition
Scanner sc = new Scanner(System.in);
String response = "Y";
do {
System.out.print("Enter first number: ");
int fnum = sc.nextInt();
sc.nextLine();
System.out.print("Enter second number: ");
int snum = sc.nextInt();
sc.nextLine();
if (fnum <= snum) {
while (fnum <= snum) {
System.out.println(fnum);
fnum ;
}
} else {
while (fnum >= snum) {
System.out.println(fnum);
fnum--;
}
}
System.out.println("Do you wish to try again [Y/N]?");
response = sc.nextLine();
} while ("Y".equalsIgnoreCase(response));
System.out.println("************************************************");
System.out.println("************************************************");
System.out.println("******************Thank you*********************");
System.out.println("************************************************");
System.out.println("************************************************");
nb: For education reasons, I've made use of response
as a exit variable, you could use sc.nextLine()
directly
So, basically, this will continue to loop until the user inputs anything other then Y
to the "continue" question (you could check for N
as well, but that's up to you)
CodePudding user response:
int enter=0;
do {
if(enter==0){
System.out.print("Enter first number: ");
int fnum = sc.nextInt();
System.out.print("Enter second number: ");
int snum = sc.nextInt();
if (fnum <= snum) {
while (fnum <= snum) {
System.out.println(fnum);
fnum ;
}
} else {
while (fnum > snum) {
System.out.println(fnum);
fnum--;
}
}
}
System.out.print("Enter 0 to continue, enter any number to end: ");
enter = sc.nextInt();
} while (enter==0);
Try this way ,your duplicated code can be removed .
So whenever you are trying to run the code based on the condition that is met by the user input , make sure that you always terminate the program inside the while loop , because do while
and while
are mostly used for the purpose of executing a code indefinitely until a certain condition is met . In your case , as you have to execute the code at least once , do while is a perfect choice for your program
CodePudding user response:
I just do this
do {
// your code
System.out.print("Press [1] to continue: ");
} while (sc.nextInt() == 1);
put your code inside, it will repeat if you input 1 with the do while method