2013-11-10 2 views
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 цикла. Где моя логика пошла не так и как я могу ее исправить?

+1

Используйте отладчик .. Это твой лучший друг. – Maroun

ответ

5

Поскольку num не изменяется в цикле, выражение num + (num*10) производит одинаковое значение во всех итерациях. Вы должны использовать предыдущее значение x вместо num, как это:

x = x * 10 + num; 

Demo on ideone.

+0

Мне нравится ваш ответ из-за того, что предоставлено демо, и решение сработало для меня :) –

0

Вы можете попробовать это:

x = num + (x * 10); 

вместо

x = num + (num*10); 
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); 
     } 
    } 
} 

вот и все

Смежные вопросы