问题是要打印以下系列:
(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();
}
}
答案 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,系列才能重新开始