系列课中的逻辑问题

时间:2013-11-10 13:47:13

标签: java math logic

我写了一个类来接受输入i , n,然后打印一系列:i; ii; iii; iiii;...n个术语。因此,如果用户输入5 3个术语,则输出为5; 55; 555;

import java.io.*;

public class replicate
{
    public void method() throws IOException
    {
        int i = 0;
        int n = 0;
        int x = 0;
        int num;
        BufferedReader obj=new BufferedReader(new InputStreamReader(System.in));
        System.out.println("Enter number");
        num = Integer.parseInt(obj.readLine());
        System.out.println("Enter number of terms");
        n = Integer.parseInt(obj.readLine());

        for(i=1;i<=n;i++)
        {
            x = num + (num*10);
            System.out.println (x);
        }
    }
}

但是,使用输入5运行4个术语的程序会给出输出

55
55
55

我已将问题追溯到最后一个for循环。我的逻辑在哪里出错,我该如何解决?

3 个答案:

答案 0 :(得分:5)

由于num在循环中没有变化,因此表达式num + (num*10)在所有迭代中产生相同的值。您应该使用之前的x值而不是num,如下所示:

x = x * 10 + num;

Demo on ideone.

答案 1 :(得分:0)

你可以试试这个:

x = num + (x * 10);

而不是

x = num + (num*10);

答案 2 :(得分:0)

import java.io.*;

public class replicate
{
    public void method() throws IOException
    {
        int i = 0;
        int n = 0;
        int x = 0;
        int num;
        int temp;
        BufferedReader obj=new BufferedReader(new InputStreamReader(System.in));
        System.out.println("Enter number");
        num = Integer.parseInt(obj.readLine());
        temp = num;
        System.out.println("Enter number of terms");
        n = Integer.parseInt(obj.readLine());

        for(i=1;i<=n;i++)
        {
            num = temp + (num*10);
            System.out.println (num);
        }
    }
}

这就是全部