为什么输出错误?

时间:2015-05-29 14:25:43

标签: java output division

我是Java的新手,我正在尝试编写一个简单的代码。这是描述: 编写一个程序,提示用户输入数字X.打印 数字从1到X.但是,代替4的打印“qqqq”的倍数。代替7的倍数,打印“七”。如果一个数字可被4和7整除,则打印“qqqqseven”。这意味着如果我输入4,我的输出应该是1,2,3,(qqqq),...但我得到1(qqqq),2(qqqq),3(qqqq),4(qqqq)....谁能帮助我,让我知道我做错了什么?任何帮助表示赞赏。比你。

public static void main(String args[])
{

    //Print Method
    System.out.println("Enter number upto which you want to print: ");
     Scanner input = new Scanner(System.in);
        int x;
        x = input.nextInt();


    for(int i=1; i <= x; i++)
    {
        System.out.println(i);

    //if x is multiples of 4
    if (x % 4 == 0)
            System.out.println("qqqq");
    //if x is multiples of 7
    if (x % 7 == 0)
            System.out.println("seven");
    //if x is divisible by 4 and 7
    if (x % 4 == 0 && x % 7 == 0)
            System.out.println("qqqqseven");

    }
}

}

2 个答案:

答案 0 :(得分:3)

替换

if (x % 4 == 0)

使用

if (i % 4 == 0)

同样适用于%

的其他事件

要获得28的倍数的正确输出,您需要将代码修改为:

if (i % 4 == 0 && i % 7 == 0) { // if i is a multiple of 28 (of both 4 & 7)
  System.out.println("qqqqseven");
}
else {
  if (i % 4 == 0) { // if i is multiples of 4
        System.out.println("qqqq");
  }
  else if (i % 7 == 0) { // if i is multiples of 7
        System.out.println("seven");
  }
}

答案 1 :(得分:1)

这里的想法是使用从最具体到最不具体的if条件。在你的情况下,最具体的条件是4和7的除数,其后是4的除数,7的除数,最后是最不具体的除数,这意味着其他一切。如果您可以按顺序激活if条件,那么您将获得结果。

注意:关闭扫描仪或打开的任何资源都是一种很好的做法。 :)

import java.util.Scanner;

public class TestProgram {

    public static void main(String[] args) {
        System.out.println("Enter number upto which you want to print: ");
        Scanner input = new Scanner(System.in);
        int x;
        x = input.nextInt();

        for (int i = 1; i <= x; i++) {
            if(i%4 == 0 && i%7 == 0) {
                System.out.println("qqqqseven");
            } else if(i%4 == 0) {
                System.out.println("qqqq");
            } else if(i%7 == 0){
                System.out.println("seven");
            } else {
                System.out.println(i);
            }
        }
        input.close();
    }
}