Java 可被5或6整除的
我正在尝试制作一个程序,其中列出了100-1000之间可被5或6整除的所有数字。这是我使用的代码:Java 可被5或6整除的,java,Java,我正在尝试制作一个程序,其中列出了100-1000之间可被5或6整除的所有数字。这是我使用的代码: public class divisibleBy5and6 { public static void main (String[] args) { j = 1; int number = 100; while (number < 1001) { if (number % 6 == 0 || number %
public class divisibleBy5and6 {
public static void main (String[] args) {
j = 1;
int number = 100;
while (number < 1001) {
if (number % 6 == 0 || number % 5 == 0) {
System.out.print(number + ", ");
number++;
j++; }
if (j % 10 == 0 && j != 0) {
System.out.println();
j++; }
else {
number++;
}
}
这显然是不对的,因为我缺少像
115
这样的数字。我做错了什么?问题是,有时,在每个循环中,您会将编号增加两次。第一次是数字是6
或5
的倍数,第二次是不打印换行符时。这具有跳过数字的效果,因此5
或6
的连续倍数不会打印,例如您的115
,因为它位于114
之后并被跳过。还请注意,5
或6
的其他连续倍数不会打印,例如125
之后的126
要明确的是,每个循环只增加
number
一次,但要删除number++从if
和else
块中选择code>,并通过放置number++无条件递增代码>位于的最底部,而循环。删除它显示的第一个位置number++代码>在系统输出打印后(数字+“,”)代码>
改变
else {
number++;
}
当你刚打印了一行新行时,它就会这样做
到
它将在每次循环迭代中执行此操作
number
应无条件递增您需要将递增的数字与if/else语句分开。它应该在每次迭代中发生,无论发生什么
int j = 1;
int number = 100;
while (number < 1001) {
if (number % 6 == 0 || number % 5 == 0) {
System.out.print(number + ", ");
j++;
}
if (j % 10 == 0) {
System.out.println();
}
number++;
}
intj=1;
整数=100;
而(数量<1001){
如果(数字%6==0 | |数字%5==0){
系统输出打印(数字+“,”);
j++;
}
如果(j%10==0){
System.out.println();
}
数字++;
}
您有一个重复的number++
,当两个条件都为真时,该重复执行了两次。
超出了某些值:现在更正:
int j = 1;
int number = 100;
while (number < 1001) {
if (number % 6 == 0 || number % 5 == 0) {
System.out.print(number + ", ");
j++;
}
if (j % 10 == 0 && j != 0) {
System.out.println();
j++;
}
number++;
}
intj=1;
整数=100;
而(数量<1001){
如果(数字%6==0 | |数字%5==0){
系统输出打印(数字+“,”);
j++;
}
如果(j%10==0&&j!=0){
System.out.println();
j++;
}
数字++;
}
试试这个:
public class DivisibleBy5and6 {
public static void main (String[] args) {
int j = 1;
for (int number = 100 ; number < 1001; number++) {
if (number % 6 == 0 || number % 5 == 0) {
System.out.print(number + ", ");
j++;
}
if (j % 10 == 0) {// j never equals 0
System.out.println();
j++;
}
}
}
}
公共类可分为5和6{
公共静态void main(字符串[]args){
int j=1;
用于(整数=100;数字<1001;数字++){
如果(数字%6==0 | |数字%5==0){
系统输出打印(数字+“,”);
j++;
}
如果(j%10==0){//j从不等于0
System.out.println();
j++;
}
}
}
}
顺便说一句,对于确定循环,最好使用For
而不是while
。(使代码更具可读性)
正如您所见,您不会以这种方式感到困惑,只在正确的位置增加一次编号。您的问题是代码格式不正确。适当缩进,它会变得更清晰:
public class divisibleBy5and6 {
public static void main (String[] args) {
j = 1;
int number = 100;
while (number < 1001) {
if (number % 6 == 0 || number % 5 == 0) {
System.out.print(number + ", ");
number++;
j++;
}
if (j % 10 == 0 && j != 0) {
System.out.println();
j++;
}
else {
number++;
}
}
公共类可分为5和6{
公共静态void main(字符串[]args){
j=1;
整数=100;
而(数量<1001){
如果(数字%6==0 | |数字%5==0){
系统输出打印(数字+“,”);
数字++;
j++;
}
如果(j%10==0&&j!=0){
System.out.println();
j++;
}
否则{
数字++;
}
}
然后您可以看到else
附加到第二个if
,而不是第一个,因此数字的递增可以发生两次
在这之后,更清楚的是,在第一个if
中,编号
只有在打印编号时才会递增。您真正想要的是编号
在每次迭代中递增,确保这一点的最佳方法是仅在关闭之前递增编号的
,而
然后您将认识到,while(number<1001)..number++
循环可以替换为更健壮的for(int number 100;number<1001;number++)
,从而完全消除循环体中的number
增量
在设计循环时,很重要的一点是要保持循环中哪些值是“不变的”(永远不会改变),这些值只是随着每次迭代而增加,并且在更不规则的基础上修改。如果你保持这些概念的正确性,那么循环就不会那么可怕。公共类模式{
public class pattern {
public static void main (String[] args) {
int j = 0;
int number = 100;
while (number < 1001) {
if (number % 6 == 0 || number % 5 == 0) {
System.out.print(number + ", ");
j++; }
if (j % 10 == 0&&(number % 6 == 0 || number % 5 == 0)) {
System.out.println();
number++;
}
else
{
number++;
}
}
}
}
公共静态void main(字符串[]args){
int j=0;
整数=100;
而(数量<1001){
如果(数字%6==0 | |数字%5==0){
系统输出打印(数字+“,”);
j++;}
如果(j%10==0&&(数字%6==0 | |数字%5==0)){
System.out.println();
数字++;
}
其他的
{
数字++;
}
}
}
}
试试这个代码
代码中的错误是,实际上您将number
增加了两次,这就是您丢失一些数字的原因。
祝你好运:)你做了两次number++
,这很可疑。尝试为循环重构。没有奇数可以被6整除。你的问题是你的代码格式不正确(严重)115可以被5整除。哈哈,你误导了所有人:)我应该再说一遍,你为什么要检查j!=0?事实上,它总是正确的。j++
应该在if
块中实现,因为它是打印的数字。你为什么要检查j!=0?事实上,它总是不正确的rue.同样正确。回答中更正。Cheers@mok只是在没有j的情况下运行代码
public class divisibleBy5and6 {
public static void main (String[] args) {
j = 1;
int number = 100;
while (number < 1001) {
if (number % 6 == 0 || number % 5 == 0) {
System.out.print(number + ", ");
number++;
j++;
}
if (j % 10 == 0 && j != 0) {
System.out.println();
j++;
}
else {
number++;
}
}
public class pattern {
public static void main (String[] args) {
int j = 0;
int number = 100;
while (number < 1001) {
if (number % 6 == 0 || number % 5 == 0) {
System.out.print(number + ", ");
j++; }
if (j % 10 == 0&&(number % 6 == 0 || number % 5 == 0)) {
System.out.println();
number++;
}
else
{
number++;
}
}
}
}