###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 + " ");
}
}