我写了一个类来接受输入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
循环。我的逻辑在哪里出错,我该如何解决?
答案 0 :(得分:5)
由于num
在循环中没有变化,因此表达式num + (num*10)
在所有迭代中产生相同的值。您应该使用之前的x
值而不是num
,如下所示:
x = x * 10 + num;
答案 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);
}
}
}
这就是全部