【问题标题】:Loop with scanner带扫描仪的循环
【发布时间】:2016-04-27 21:52:00
【问题描述】:

我正在尝试编写要求我插入年龄的代码。如果它低于 10,我希望它再问我 3 次。如果超过 10,它会说“欢迎”。我做不到。

package newProject;
import java.util.Scanner;
    public class mainclass {
        public static void main(String[] args) {

            System.out.println("Enter your age");
            Scanner age= new Scanner(System.in);

            int userage= age.nextInt();
            if(userage<10){
                for(int x = 3;x<3;x++){
                    System.out.println(userage+ "is too young");
                    System.out.println("Enter your age");
                    int userage1= age.nextInt();
                }
            }else{
                System.out.println("welcome");
            }
       }
  }

【问题讨论】:

  • 除了您的代码存在严重的格式问题之外,我们还需要更多信息,而不仅仅是“它无法做到这一点”。请参阅How to Ask

标签: java loops input java.util.scanner


【解决方案1】:

无论您的程序的意义如何,您的错误都在于您在 x 变量中设置的值。您必须将 x 的值设置为 0 以进行 3 次迭代。

    System.out.println("Enter your age");
    Scanner age= new Scanner(System.in);

    int userage= age.nextInt();
    if(userage<10) {
    // You have to set x to 0 not 3
    for(int x = 0;x<3;x++){
        System.out.println(userage + "is too young");
        System.out.println("Enter your age");
        int userage1= age.nextInt();}
    }
    else{
        System.out.println("welcome");
    }

【讨论】:

  • 我只是在练习java,我今天自学所以......当我写你的代码时,机器打印我写的第一个答案,例如如果我写5那么我没关系写下它一直打印“5 太年轻了”
  • 那是因为如果你在 for 循环中看到第一个打印,你使用了 userage 变量,但是在你读入 userage1 变量之后,如果你想解决这个问题,第二个 userage 应该是这样的: userage = age.nextInt();而不是一个新的变量 userage1。你懂我吗?
【解决方案2】:

问题来了:

for(int x = 3;x<3;x++)

您已将for 循环设置为在x 小于3 时运行,但您已声明x 等于3。因此,条件x&lt;3 永远不会满足,所以循环永远不会运行。你应该这样做:

for (int x=0; x<3; x++)

顺便说一句,请使用适当的缩进来格式化您的代码。没有缩进就很难阅读。

【讨论】:

    【解决方案3】:
    package newProject;
    import java.util.Scanner;
    public class mainclass {
        public static void main(String[] args) {
            System.out.println("Enter your age");
            Scanner age= new Scanner(System.in);
    
            int userage= age.nextInt();
            if(userage<10){
                for(int i = 0;i<3;i++){
                    System.out.println(userage+ "is too young");
                    System.out.println("Enter your age");
                    int userage1= age.nextInt();
                }
            }
    
           else{
                System.out.println("welcome");
           }
       }
    }
    

    【讨论】:

    • 这实际上只是对现有答案的重复。
    猜你喜欢
    • 1970-01-01
    • 2016-02-06
    • 2012-09-27
    • 2016-01-26
    • 1970-01-01
    • 1970-01-01
    • 2018-05-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多