我无法按正确的顺序得到我的整数

时间:2017-05-30 03:56:32

标签: java loops

我有部分代码询问数字,但我无法按照我需要的正确顺序得到它们。此外,我不知道如何添加它们并显示它们的数量。

  问题陈述:      

使用一个循环处理从300到200(包括300和200)的整数的程序。该程序应检测11或13的倍数,但不能同时检测两者。倍数应打印左对齐,每列8个字符,每行5个。当显示所有倍数时,程序应显示找到的倍数及其总和。

package chapter5;

public class Assignment1 {

    public static void main(String[] args) {
        int sum = 300;
        while (sum >= 200 && sum <= 300 ) {
            if((sum % 11 == 0) != (sum % 13 == 0)) { 
                System.out.print(sum + " ");
            }
            sum = sum - 1;  
        }
    }
}

输出:

299 297 275 273 264 260 253 247 242 234 231 221 220 209 208

3 个答案:

答案 0 :(得分:3)

首先,您可以从List<Integer>开始收集倍数。循环你已经给出的价值观。测试每个值是否为11 xor 13的倍数。如果是,请将其添加到sum变量,并添加到List。然后迭代List,打印左对齐的每个值,并在每第五行添加换行符。然后显示计数(List的大小)和sum。像,

int sum = 0;
List<Integer> al = new ArrayList<>();
for (int i = 300; i >= 200; i--) {
    if ((i % 11 == 0) ^ (i % 13) == 0) {
        al.add(i);
        sum += i;
    }
}
for (int i = 0; i < al.size(); i++) {
    System.out.printf("%-8d", al.get(i));
    if ((i + 1) % 5 == 0) {
        System.out.println();
    }
}
System.out.printf("Found %d multiples, with a sum of %d.%n", al.size(), sum);

哪个输出

299     297     275     273     264     
260     253     247     242     234     
231     221     220     209     208     
Found 15 multiples, with a sum of 3733.

有一个循环,没有List之类的,

int sum = 0;
int count = 0;
for (int i = 300; i >= 200; i--) {
    if ((i % 11 == 0) ^ (i % 13) == 0) {
        System.out.printf("%-8d", i);
        count++;
        sum += i;
        if (count % 5 == 0) {
            System.out.println();
        }
    }
}
System.out.printf("Found %d multiples, with a sum of %d.%n", count, sum);

对于相同的输出。

答案 1 :(得分:1)

要获得固定宽度的列,请使用以下内容打印每个数字的每个数字:

System.out.printf("%-8d", sum);

要每行打印5列,您需要保留列计数器。从零开始。每次打印数字时,请递增列计数器。当它达到5时,执行System.out.println();以开始新行,并将列计数重置为零。

答案 2 :(得分:0)

由于循环在3个数字中运行,所以只有在打印时找到每个数字后添加一个标签,并在循环的五次迭代后打印一个新行。

package chapter5;


public class Assignment1 {

public static void main(String[] args) {
    int i= 300,c=0,sum=0,multiples=0;
    while (i>= 200 && i<= 300 ) {
        if((i% 11 == 0) != (i% 13 == 0)) { 
            System.out.print(i+ "\t");
            c++;
            multiples++;
            sum+=i;
        }
        if(c==5){
            System.out.println();
            c=0;
        }
        i--; 
    }
    System.out.println();//TO print the sum in the matrix remove this line.

    System.out.print("Found "+multiples+" and sum = "+sum);
}
}

//If the loop gets in to 2 digit number then update the line
//System.out.print(i+ " \t");
// \t = tab space = 5 white space.