Java程序未提供所需的输出

时间:2018-08-05 16:05:19

标签: java

问题是要打印以下系列:

(a+(2^0)*b), ((a+(2^0)*b)+(a+(2^1)*b)), ((a+(2^0)*b)+(a+(2^1)*b)+(a+(2^2)*b)...+(a+(2^(n-1))*b))

a,b,n和t的值由用户输入。 “ t”表示用户要计算的系列数。例如,如果t = 2,则用户可以给出a,b和n的两个独立输入,并获得两个不同的序列。

if t=2  
a=0,b=2,n=10

第二系列-

a=5,b=3,n=5

输出应为:

2 6 14 30 62 126 254 510 1022 2046  (1st series)  
8 14 26 50 98                       (2nd series) 

下面的程序未显示所需的输出。有人可以指出错误吗?

import java.io.*;  

class Solution{  

    public static void main(String []argh){  

        Scanner in = new Scanner(System.in);  

        int t=in.nextInt();  

        int s=0;  

        for(int i=0;i<t;i++){  

            int  a  =  in.nextInt();    

            int  b  =  in.nextInt(); 

            int n = in.nextInt();

            for(int j=0;j<n;j++)  
            {  
                s = s+(a+(2^j)*b);  
                System.out.print(s+" ");  
            }  
        }  
        in.close();  
    }  

}  

5 个答案:

答案 0 :(得分:2)

在第二个内部循环中,变量j永不更新(而是使用i)。您的问题可能来自这里。

答案 1 :(得分:2)

在第二个循环中,它应该是 j 而不是 i -> for(int j=0;j<n;j++)

答案 2 :(得分:2)

j而不是i。并使用java.lang.Math.pow;

您在String []argh => String[] args中也有错字;

我认为int s应该是double s

import java.io.*;
import java.lang.*;  

    class Solution{  

        public static void main(String[] args){  

            Scanner in = new Scanner(System.in);  

            int t=in.nextInt();  

            double s=0;  

            for(int i=0;i<t;i++){  

                int  a  =  in.nextInt();    

                int  b  =  in.nextInt(); 

                int n = in.nextInt();

                for(int j=0 ; j<n ; i++)  
                {  
                    s = s+(a+(java.lang.Math.pow(2, j))*b);  
                    System.out.print(s+" ");  
                }  
            }  
            in.close();  
        }  

    }  

答案 3 :(得分:2)

^并不意味着Java的强大功能。 ^表示按位XOR。请改用java.lang.Math.pow方法。

答案 4 :(得分:2)

内循环完成后,您应该使s = 0,系列才能重新开始