我是编码的新手,我正在尝试删除最后一个循环的最后一个逗号。如果能得到帮助,那就太好了!
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner dev = new Scanner(System.in);
int num1, num2;
num1 = dev.nextInt();
num2 = dev.nextInt();
int numa = 1;
System.out.println();
for (numa = num1; numa <= 100; numa++) {
if (numa / num1 == 1 && numa % num1 == 0)
System.out.print(numa);
else if (numa % num1 == 0)
System.out.print("," + numa);
}
int numb = 1;
System.out.println();
for (numb = num2; numb <= 100; numb++) {
if (numb / num2 == 1 && numb % num2 == 0)
System.out.print(numb);
else if (numb % num2 == 0)
System.out.print("," + numb);
}
int numc = 1;
System.out.println();
for (numc = num1; numc <= 100; numc++) {
if(numc / num2 == 2 && numb % num2 == 0)
System.out.print(numc);
else if(numc % num1 == 0 && numc % num2 == 0)
System.out.print(numc + ",");
}
}
}
我建议使用以下更标准的方法,因此,对于长期的Java程序员而言,它是可读的(i
用于整数循环计数器,更喜欢使用count<
代替<=
,从而简化了数学表达式):
System.out.println();
boolean lastWasEqual = false;
for (int i = num1; i < 101; i++) {
boolean isHalf = (2 * i == num2); // a/b = 2 <=> 2a = b
boolean isEqual = (i == num2); // (a%b) = (b%a) = 0 <=> a = b
if (isHalf || isEqual) {
if (lastWasEqual) {
System.out.print(",");
}
System.out.print(i);
lastWasEqual = isEqual;
}
}
这里的想法是,仅,
当我们知道(a)准备好打印(lastWasEqual
)和(b)在它之后将输出时,才输出一次(这样就永远不会打印“最后一个逗号”)。
通过看数学,您最多可以看到isEqual
一次,isHalf
也最多一次。它是很容易看到的时候,他们将是真实的。因此,不需要循环:
System.out.println();
boolean willReachEqual = (num1 <= num2) && (num2 <= 100);
boolean willReachHalf = (num1 * 2 <= num2)
&& ((num2 % 2) == 0) && (num2 <= 200);
boolean willReachBoth = willReachEqual && willReachHalf;
System.out.println(
(willReachHalf ? (num2 / 2) : "") +
(willReachBoth ? "," : "") +
(willReachEqual ? num2 : ""));
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句