【问题标题】:Java Loop help, how to write a loopJava Loop帮助,如何编写循环
【发布时间】:2014-09-19 17:46:47
【问题描述】:

需要编写一个循环,提示用户输入大于 1 的值,打印从 1 到用户给您的数字(即,如果用户输入 5,您的程序将打印“1 2 3 4 5 ”)。

我让循环使用代码打印出 1-10 的数字:

public class Loop {

   public static void main(String args[]) {
      int num = 0;

      while(num < 10) {
         num = num + 1;
         System.out.print(" " + num);
      }
   }
}

要完成我想修改的代码:

public class Loop {

   public static void main(String args[]) {
      int num = 2;
      if(num <1){
         System.out.print(" Num has to be greater than one");

      while(num < 10) {
         num = num - 1;// subtract instead of add
         System.out.print(" " + num);
      }
   }
}

但是当我编译和执行时,它不包括 2 并且还包括负数。我如何让它包含输入的数字并停在零处

更新 - 让代码正确运行并进入下一步。这是声明一个开始和停止变量并打印出开始和停止变量之间的值。 即 (start 停止)它将交换值并打印出正确的输出。 即 (start>stop) start = 3, stop = 1 然后 out 应该仍然是“1 2 3”,通过交换 start 和 stop 的值

到目前为止,这是我的代码:

System.out.println("\n");
int start = 1;
int stop = 5;

while(start <= stop){
   System.out.print(start + " ");
   start++;
}

【问题讨论】:

  • 是否可以交换启动和停止?

标签: loops


【解决方案1】:

如果 number2 ,则循环从 2&lt;10,1&lt;10,0&lt;10,-1&lt;10,-2&lt;10.... 开始一直持续

您正在检查号码是否为less than 10,您还应检查是否为greater than or equal to zero

public static void main(String[] args) {

    // Scanner s = new Scanner(System.in);
    // int num = s.nextInt();

    int num = 2;
    if (num < 1)
      System.out.print(" Num has to be greater than one");
    else
      while (num >= 0 && num < 10) {
        System.out.print(num-- + " ");
      }
  }

取消注释以读取用户输入

【讨论】:

    【解决方案2】:

    你必须从 1 循环到指定的数字,所以引入一个从 1 到 num 的新变量。

    例如将 while 循环替换为:

    for (int i=1; i<num; ++i) {
        System.out.print("  "+i);
    }
    

    【讨论】:

      【解决方案3】:

      您必须在打印前验证您的号码

      import java.util.Scanner;
      
      //this alows you to enter your number on keyboard and validates it (>0)
      Scanner sc = new Scanner(System.in);
      int num = 0;
      While (num <=0)
      {
      system.out.println("Enter a number greater then 0");
      num = sc.nextInt();
      
      }
      
      for (int i=1;i<=num;i++){
      system.out.println(" "+i);
      }
      

      【讨论】:

        【解决方案4】:

        在打印之前减少“num”。因此,当您点击打印语句时,您第一次进入循环 num 是 1。您需要在进入循环之前进行增量:将 1 添加到 num 以便在您第一次打印时它会减为 2,或者您需要交换减量和打印语句,以便在修改之前打印 num 。第二个你必须考虑到多余的减量,以便在最后打印 0。

        无论哪种方式,您都希望减少修改,因此您需要在 while 语句中检查 num 是否为 0 或更大。在这种情况下,for 循环可能会有所帮助。

        对您来说,一个很好的技巧是通过手动记录每个变量在每一步之后的值来逐步执行您的逻辑。

        【讨论】:

        • 非常有帮助,请查看我对我的问题的编辑(更新--)需要一些帮助交换值
        • 我从来没有注意到这个回复。我真的不明白你的更新?您要么想要类似于 int start=1; 的东西int stop = 3;while(start = stop){sysout(start);开始 - }。我不会尝试从“停止”变量开始并转到“开始”..
        【解决方案5】:
        for (int i = start; i <= stop; ++i)
            system.out.println(i + " ");
        

        【讨论】:

          猜你喜欢
          • 2022-07-12
          • 1970-01-01
          • 2016-06-14
          • 1970-01-01
          • 1970-01-01
          • 2015-03-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多