2

我写了一个类来接受输入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循环。我的逻辑哪里出了问题,我该如何解决?

4

3 回答 3

5

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

x = x * 10 + num;

ideone 上的演示。

于 2013-11-10T13:49:01.347 回答
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);
        }
    }
}

就这样

于 2013-11-10T13:57:49.500 回答
0

你可以试试这个:

x = num + (x * 10);

代替

x = num + (num*10);
于 2013-11-10T13:49:38.003 回答