该程序的全部内容是“编写一个程序,提示用户输入2到10之间的整数,并打印出1到100之间的所有整数,除了用户输入的数字的整数倍(modulois)有用)。 例如,如果用户输入9,则程序应打印出1到100之间的所有数字,但程序1打印的数字除外。“我遇到的问题是程序打印与我想要的完全相反!打印所有输入数字的倍数:( 我是一名学生,所以建议和帮助是受欢迎的,但最重要的是我想学习如何解决这个计划,以帮助我在未来。谢谢大家:))
代码:
import java.util.Scanner;
public class ProgramTwo
/*
*
*/
{
public static void main(String[] args)
{
System.out.println("Enter a number you would like to use: ");
Scanner sc=new Scanner(System.in);
int eviltwinNumb=sc.nextInt();
for(int i=eviltwinNumb; i<=100; i+=eviltwinNumb)
{
if(i%i != 0 )
{
i++;
}
System.out.println(+i);
}
}
}
答案 0 :(得分:1)
您正在以您输入的数字开始循环,并且您在每一步中将该数字递增i,并且您的条件完全没有区别(它永远不会是真的)。这就是为什么你的代码精确打印出你不想要打印的数字的原因(eviltwinNumb,2 * eviltwinNumb,3 * eviltwinNumb,......)。
您应该在每个步骤中将i增加1,并仅在(i%eviltwinNumb != 0 )
时打印。
答案 1 :(得分:0)
试
for(int i=1; i<=100; i++) // loop from 1 to 100
{
if(i%eviltwinNumb != 0 ) // if not an exact multiple of eviltwinNumb
{
System.out.println(i); // print it
}
}
答案 2 :(得分:0)
首先,我将解释为什么 无法正常工作。循环首先将i
设置为输入的数字,然后通过循环每次迭代,使用i
将所选数字增加i += eviltwinNumb
。因此,您只考虑给定数字的倍数。另外,你的if语句永远不会触发,因为i%i = 0表示所有i,所以它目前没用(考虑一下 - 任何数字除以它自己都将没有余数,这就是模数运算符(%)计算)。
相反,您应该考虑如何打印除倍数之外的数字。要做到这一点,您必须考虑1到100之间的每个数字 - 因此您的for循环应该从i=1
迭代到100
。然后,对于每个号码i
,您应该考虑它是eviltwinNumb
的倍数。您可以使用i % eviltwinNumb
执行此操作。如果 是多个,不要打印它。或者,如果不是多个,执行打印它。因此,您应该只在i
时打印i % eviltwinNumb != 0
。
要查看完整的示例,请参阅Scary Wombat的帖子,但希望此讨论有助于您理解。