我的Java程序有问题
该程序的要点是“编写一个程序,提示用户输入2到10之间的整数,并打印出1到100之间的所有整数,但用户输入的数字的整数倍数除外(modulois有用)。 例如,如果用户输入9,您的程序应该打印出1到100之间的所有数字,但程序1打印的数字除外。“我遇到的问题是,程序打印的数字与我想要的完全相反!打印输入的数字的所有倍数:( 我是一名学生,因此欢迎提供建议和帮助,但最重要的是,我想学习如何思考如何解决该计划,以便在未来帮助我。谢谢大家:) 代码:我的Java程序有问题,java,Java,该程序的要点是“编写一个程序,提示用户输入2到10之间的整数,并打印出1到100之间的所有整数,但用户输入的数字的整数倍数除外(modulois有用)。 例如,如果用户输入9,您的程序应该打印出1到100之间的所有数字,但程序1打印的数字除外。“我遇到的问题是,程序打印的数字与我想要的完全相反!打印输入的数字的所有倍数:( 我是一名学生,因此欢迎提供建议和帮助,但最重要的是,我想学习如何思考如何解决该计划,以便在未来帮助我。谢谢大家:) 代码: import java.util.Scanner;
import java.util.Scanner;
公共课程二
/*
*
*/
{
公共静态void main(字符串[]args)
{
System.out.println(“输入您想要使用的号码:”);
扫描仪sc=新的扫描仪(System.in);
int=sc.nextInt();
对于(int i=eviltwinNumb;i您以输入的数字开始循环,并且在每一步中按该数字递增i,并且您的条件没有任何区别(这永远不会是真的)。这就是为什么您的代码精确打印您不希望打印的数字(eviltwinNumb,2*eviltwinNumb,3*eviltwinNumb,…)
您应该在每个步骤中仅将i增加1,并且仅当(i%evitwinnumb!=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
}
}
用于(int i=1;i首先,我将解释它不起作用的原因。循环开始时,将i
设置为输入的数字,并且在循环中的每次迭代中,您都使用i+=evitwinnumb
按所选数字递增i
。因此,您只考虑给定数字的倍数。此外,您的if语句将l永远不会触发,因为所有i的i%i=0,所以它当前是无用的(想想看——任何数字除以它本身都不会有余数,这是模运算符(%)计算的结果)
相反,你应该考虑如何打印除了倍数以外的数字。要做到这一点,你必须考虑每一个数字在1和100之间,这样你的for循环应该从<代码> i=1 < /代码>到<代码> 100 > />代码。然后,对于每一个数字<代码> i <代码>,你应该考虑它是否是<代码> EvultWimNub < /代码>的倍数。使用
i%eviltwinNumb
执行此操作。如果它是倍数,则不打印它。或者,如果它不是倍数,则打印它。因此,当i%eviltwinNumb!=0
时,只应打印i
要查看完整的示例,请参阅《恐怖袋熊》的帖子,但希望此讨论有助于您的理解。什么?说真的吗?我%i?感谢您的帮助:)感谢您的帮助:)
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
}
}