I have a school assignment that goes like this: Read the int variable number. Assume that number ≥ 0. Output the numbers from number to 1 in one line (or an empty line if no positive number to print). In the next line, output the numbers -number to number on one line. Use space in both lines to separate the numbers.
I am not allowed to use any for loops and I am encouraged to use while loops. The output should be like this: Output
I have been really struggling with this for hours. Please help. Here is the code I have so far. The main thing I am struggling with is the 2nd line and it not reaching back up to the higher numbers.
import java.util.Scanner;
public class Exercise
{
public static void main(String[] args)
{
Scanner myScanner=new Scanner(System.in);
int number=myScanner.nextInt();
if(number<=0)
{
System.out.println();
}
else
{
do
{
System.out.print(number " ");
number--;
}
while(number>=1);
System.out.println();
}
do
{
System.out.print(-number " ");
number ;
}
while(-number>=0);
}
}
Thanks
CodePudding user response:
In your first do-while
loop (where you print values 0
to number
, you are decrementing the value of number
until it hits 0
So, your second do-while
loop assumes the number
in question is 0
Personally, I would recommend keeping number
untouched and using a second variable for your loops.
Right after int number = Scanner.nextInt();
just put a int index = number;
In your loops, use index
instead of number
. Right before the second loop, you should set index = -number
The while
of that second loop should be while(index <= number)
and instead of printing -number
just print index
Scanner myScanner=new Scanner(System.in);
int number=myScanner.nextInt();
int index = number;
if(index <=0)
{
System.out.println();
}
else
{
do
{
System.out.print(index " ");
index--;
}
while(index >=1);
System.out.println();
}
index = -number;
do
{
System.out.print(index " ");
index ;
}
while(index <= number);
CodePudding user response:
Problem is on the last line of your code.
while(-number>=0)
If number
is positive, -number
is negative, so it will only run your loop once.
Try this:
int aux = number;
do
{
System.out.print(-aux " ");
aux ;
}
while(aux<number);