Input checking
The most obvious issue that I see is that you are not verifying that the correct input is being entered. For example, if you enter a String instead of an int:
> hello
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:864)
at java.util.Scanner.next(Scanner.java:1485)
at java.util.Scanner.nextInt(Scanner.java:2117)
at java.util.Scanner.nextInt(Scanner.java:2076)
at Main.main(Main.java:8)
A natural way to do this is with Scanner.hasNextInt()
. Also, consider adding a little bit of feedback so it is less confusing for the user. Something like this, for example:
Scanner scan = new Scanner(System.in);
int start;
int end;
System.out.println("Enter 1st whole number: ");
while (!scan.hasNextInt()) {
System.out.println("Input must be a whole number. Try again:");
scan.next();
}
start = scan.nextInt();
System.out.println("Enter 2nd whole number: ");
while (!scan.hasNextInt()) {
System.out.println("Input must be a whole number. Try again:");
scan.next();
}
end = scan.nextInt();
Result:
Enter 1st whole number:
> hello
Input must be a whole number. Try again:
> 5
Enter 2nd whole number:
> world
Input must be a whole number. Try again:
> 20
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
One other (more general) method (though it is more of an anti-pattern in this particular case) to validate things is with a try/catch block. See this answer on Stack Overflow for an example on how to do this.
Scanner scan = new Scanner(System.in);
int start;
int end;
try {
System.out.println("Enter 1st number:");
start = scan.nextInt();
System.out.println("Enter 2nd number:");
end = scan.nextInt();
} catch (java.util.InputMismatchException e) {
System.out.println("Input must be an integer.");
System.out.println("Exiting program.");
return;
}
Enter 1st number:
> hello
Input must be an integer.
Exiting program.
Formatting
One other remark, although it is more stylistic, it is often considered a good habit in general to include braces in Java even when they are not needed. So this bit:
if(start < end)
for(int i = start; i <= end; i++)
System.out.print(i + " ");
else if(start > end)
for(int i = start; i >= end; i--)
System.out.print(i + " ");
Would look like this:
if(start < end) {
for(int i = start; i <= end; i++) {
System.out.print(i + " ");
}
}
else if(start > end) {
for(int i = start; i >= end; i--) {
System.out.print(i + " ");
}
}