我有部分代码询问数字,但我无法按照我需要的正确顺序得到它们。此外,我不知道如何添加它们并显示它们的数量。
问题陈述:使用一个循环处理从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
答案 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.