Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 2个循环1个递减变量_Java_Loops_For Loop_While Loop - Fatal编程技术网

Java 2个循环1个递减变量

Java 2个循环1个递减变量,java,loops,for-loop,while-loop,Java,Loops,For Loop,While Loop,我有一个赋值,它调用一个输入整数,然后它将该整数递减到1 它必须使用while循环来显示该数字,一直显示到1,并且在另一行上使用for循环来执行相同的操作 现在,在启动while循环之后,for循环的输出不会显示。显然,因为在while循环之后startNum现在设置为0 我怎样才能绕过这个问题,以便在两行上显示递减的数字? 我目前拥有的代码: public class CountDown { public static void main(String[] args) {

我有一个赋值,它调用一个输入整数,然后它将该整数递减到1

它必须使用while循环来显示该数字,一直显示到1,并且在另一行上使用for循环来执行相同的操作

现在,在启动while循环之后,for循环的输出不会显示。显然,因为在while循环之后startNum现在设置为0

我怎样才能绕过这个问题,以便在两行上显示递减的数字? 我目前拥有的代码:

public class CountDown 
{

    public static void main(String[] args) 
    {
        Scanner input = new Scanner(System.in);

        System.out.print("Enter a number: ");

        int startNum = input.nextInt();

        System.out.println("WHILE LOOP: ");

        while (startNum > 0)
        {
            System.out.print(startNum + " ");
            startNum--;
        }

        System.out.println("\nFOR LOOP:");

        for (int x = 0; x < startNum; x++)
        {
            System.out.print(startNum + " ");

        }

    }

}
公共类倒计时
{
公共静态void main(字符串[]args)
{
扫描仪输入=新扫描仪(System.in);
System.out.print(“输入一个数字:”);
int startNum=input.nextInt();
System.out.println(“WHILE循环:”);
while(startNum>0)
{
系统输出打印(startNum+“”);
startNum--;
}
System.out.println(“\n循环:”);
对于(int x=0;x
for
循环之前,使用另一个变量将
startNum
重置回其原始值

// ...
int startNum = input.nextInt(); 
int reset = startNum;
// ...
startNum = reset;
for (int x = 0; x < startNum; x++)
// ...
/。。。
int startNum=input.nextInt();
int reset=startNum;
// ...
startNum=重置;
对于(int x=0;x
像这样做:

public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        System.out.print("Enter a number: ");

        int startNum = input.nextInt();

        System.out.println("WHILE LOOP: ");
        int temp = startNum;           // store startNum in temp variable
        while (startNum > 0) {
            System.out.print(startNum + " ");
            startNum--;
        }

        System.out.println("\nFOR LOOP:");

        for (int x = temp; x >0 ; x--) {   // here iterate through temp.
            System.out.print(x + " ");

        }

    }

因为Java支持
OOP
原语在
Java
中通过值传递

为什么不创建一个类并将其命名为
Num

public class Num {

        private int startNum;

        public Num() {

            startNum = 0;
        }

        public int getStartNum() {
            return startNum;
        }

        public void setStartNum(int startNum) {
            this.startNum = startNum;
        }
}
Dirver类成为:

public static void main(String[] args) {

        Scanner input = new Scanner(System.in);
        Num n = new Num();
        System.out.print("Enter a number: ");

        n.setStartNum(input.nextInt());

        System.out.println("WHILE LOOP: ");
        int counter = n.getStartNum();
        while (counter > 0) {
            System.out.print(counter + " ");
            counter--;
        }

        System.out.println("\nFOR LOOP:");

        for (int x = 0; x < n.getStartNum(); x++) {
            System.out.print(x + " ");

        }

    }

将用户输入存储在第三个变量中,例如。。。用户输入。然后在每次循环之前将startNum设置为userInput。你在这里问你的学校作业吗?Mark W:好吧,这很有效……我已经考虑过这个问题了。谢谢你的帮助。DKSRathore:不幸的是,虽然我认为这是不受欢迎的…是的。但在这个例子中,我只是问我的代码有什么错误或遗漏。@ihaveacode我发布了我的答案,让我知道你的想法it@DKSRathore . 脱离主题的(我们通常看到的)是a)复制/粘贴作业问题,b)不显示代码(因为他们通常没有代码)和/或c)没有特定问题(除了作业问题所说的以外)。这里的OP并没有复制/粘贴他们的作业,提供了他们的代码,并给出了一个具体的问题——就我所知,所有这些都是关于这个主题的。
Enter a number: 8
WHILE LOOP: 
8 7 6 5 4 3 2 1 
FOR LOOP:
0 1 2 3 4 5 6 7