在我的Java程序中遇到问题

时间:2014-08-28 02:26:33

标签: java

该程序的全部内容是“编写一个程序,提示用户输入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);
    }
    }
}

3 个答案:

答案 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的帖子,但希望此讨论有助于您理解。