任何人都可以检查我的代码,看看为什么我的循环不起作用?

时间:2011-11-03 17:33:28

标签: java

import java.util.Scanner;

public class asg3 {

    public static int setoriginal() {
        int d=0; 
        int l=0;                                                           
        do {   
            Scanner input = new Scanner(System.in);
            System.out.println("Please enter a 4 digit number: ");
            d=input.nextInt();
            if (d<=9999 || d>999) {
                break;
            } else {
                System.err.printf ("You did not enter 4 digits\n");
            }           
            l=l+1;
        } while (l<3);    
        return d;
    }

    public static void main(String[] args) {
        setoriginal();
    }
}

当我输入12345时,它可以工作,但似乎不适用于除四位数之外的任何其他数字。 什么可能是错的或我做错了什么?先谢谢你们!

4 个答案:

答案 0 :(得分:6)

看看这个条件:

if (d <= 9999 || d > 999)

要评估为false,你必须找到一个大于9999 小于1000的值。我认为你很难找到这样的数字...

我怀疑你的意思是:

if (d <= 9999 && d > 999)

我个人认为这是:

if (d >= 1000 && d <= 9999)

if (1000 <= d && d <= 9999)

在所有这些版本中,您基本上都会检查它是否大于或等于1000 小于或等于9999。

答案 1 :(得分:2)

if (d<=9999 || d>999) {break;}更改为if (d<=9999 && d>999) {break;}

您使用||代替&&。还要考虑更改顺序,使其如下所示;

if (d>=1000 && d<=9999)
    break;

答案 2 :(得分:2)

  if (d<=9999 || d>999) {break;}

每个数字低于9999或高于999;例如,15低于9999并使条件成立。我想,你应该替换||和&amp;&amp;操作

答案 3 :(得分:0)

只需将||替换为&&即可。应该工作:)