I need to find the first 16 multiples of 2 starting with 2. Then find the product in the next line like this. I need to use for loops only.
Sample output: 2 4 6 8 10 12 ...
The product is ______
I tried this. For loops only.
import java.util.Scanner;
public class Program30
{
public static void main(String args[]) {
int a,b;
b=2*4*6*10*12*14*16*18*20*22*24*26*28*30*32;
for(int x=1;x<=16;x ) {
a=2*x;
System.out.print(a " ");
}
System.out.println("\nThe product is " b);
}
}
Is there a better way to do this? Thank you.
CodePudding user response:
On the hardcoded try you are missing the number 8.
public static void main(String[] args) {
long a;
long b = 1L;
for (int x = 1; x <= 16; x ) {
a = 2L * x;
b *= a;
System.out.print(a " ");
}
System.out.println("\nThe product is " b);
}
CodePudding user response:
It is unclear exactly what you want to do with both a
and b
. But you are doing several things incorrectly which can cause some problems.
ints
are not large enough to hold the product. So you need to declare them as longs. And intializea
to1
b=2*4*6*10*12*14*16*18*20*22*24*26*28*30*32;
Won't sum correctly since the addition is using ints. So set the first value to a long like so using2L
. This will force long conversion.b=2L*4*6*8*10*12*14*16*18*20*22*24*26*28*30*32;
You were also missing an8
.a = 2*x;
keeps overwriting the previous value. What you want isa = a * 2*x
Here is the modified code.
public static void main(String args[]) {
long a = 1,b;
b=2L*4*6*8*10*12*14*16*18*20*22*24*26*28*30*32;
for(int x=1;x<=16;x ) {
a = a *2*x;
System.out.println(a " ");
}
System.out.println("\nThe product for a is " a);
System.out.println("\nThe product for b is " b);
}
prints
2
8
48
384
3840
46080
645120
10321920
185794560
3715891200
81749606400
1961990553600
51011754393600
1428329123020800
42849873690624000
1371195958099968000
The product for a is 1371195958099968000
The product for b is 1371195958099968000