⑴ 為什麼再java中求100的階乘結果是0,我知道這已經超了int的范圍了但是不應該報錯嗎
java中 int溢出,結果只會保留低32位,高位會拋棄掉。當你算到100的時候,溢出太多,後面的都變成0了(事實上,你算到34的時候已經溢出為0了);系統只是將多餘的位(2進制的高位)舍棄,不會報錯的。
在Java Language Specifictionz中所述(JSL 15.7.1)
If an integer multiplication overflows, then the result is the low-order bits of the mathematical proct as represented in some sufficiently large two』s-complement format. As a result, if overflow occurs, then the sign of the result may not be the same as the sign of the mathematical proct of the two operand values.
⑵ 用java語言求100的階乘
100的階乘要用bigdecimal才可以
import java.math.BigDecimal;
public class Information {
public static void main(String[] args) {
BigDecimal bg = new BigDecimal(1L);
int i = 1;
while(i <= 100){
bg = bg.multiply(new BigDecimal(i++));
}
System.out.println(bg.toString());
}
}
⑶ [急!]java 求100階乘各位數的和 已有答案,求解釋!
import java.math.BigDecimal; //導入包
public class DigitFactorial //定義類
{
public static void main(String[] args)
{
BigDecimal big = new BigDecimal(1); //聲明一個BigDecimal對象
int i = 1;
while(i <= 100) //在i小於或等於100的時候執行下面的語句
{
big = big.multiply(new BigDecimal(i++)); //每次都用i的階乘的結果取乘以i+1,得到i+1
//的階乘,比如:i=1時, //big=1*2 時, big=1*2*3,最後得到100的階乘
}
String str = big.toString(); //把100的階乘轉換成字元串
System.out.println("Result: " + str); //輸出
int sum = 0;
for(i = 0; i < str.length();i++) //當i在0到str.length()之間時執行,也就是遍歷//str 的每一個字元
{
sum += Integer.parseInt(String.valueOf(str.charAt(i))); //把每一個字元都換成整數再相加,得到所有數的和
}
System.out.println("Sum is: " + sum); //輸出
}
}
BigDecimal和BigInteger用法的區別:
BigDecimal返回的是小數,可以進行四捨五入,用的較多;
BigInteger返回的是整數,用的較少
其他沒多少區別
⑷ 求Java用數組求100的階乘
要數組做?給你個程序
class Test{
public static void main(String argds[]){
int a[] = new int[100];
int sum=1;
for(int i=0;i<a.length;i++){
a[i] = i+1; //給數組復制,從1到100
}
for(int j=0;j<a.length;j++){
sum = sum*a[j]; //計算階乘
}
}
}
計算其他值的階乘,只要把定義數組裡面的100換成其他值就好了。
給我分啊,謝了
⑸ 關於java計算100的階乘的問題求大神解答
import java.math.*;
public class JieCheng{
public static void main(String[] args){
System.out.println("100! = "+fun(100));
}
pubic static BigIntegr fun(long n){
BigIntegr result = BigInteger.ONE;
for(int i = 1;i <= n;i++)
result = result.mutiply(new BIgIntegr(i+「 」));
return result;
}
}
⑹ 求Java寫的100的階乘
100的階乘int是存不了的,要用大數類:import java.math.BigDecimal;
public class Test {
public static void main(String args[]){
BigDecimal result= new BigDecimal(1);
for(int i=1;i<=100;i++){
BigDecimal i_value= new BigDecimal(i);
result = result.multiply(i_value);
}
System.out.println("result="+result);
}
}
⑺ java中怎麼實現階乘,如計算1~100的階乘
使用BigInteger大容量運算類計算100的階乘
一.一般演算法(循環)
view plain to clipboardprint?
public class Test {
public static void main(String[] args) {
int result = 1;
for (int i = 1; i <= 100; i++) {
result *= i;
}
System.out.println(result);
}
}
public class Test {
public static void main(String[] args) {
int result = 1;
for (int i = 1; i <= 100; i++) {
result *= i;
}
System.out.println(result);
}
}
輸出結果為0,因為int無法保存下100的階乘的結果,100的階乘的長度至少大於50位,也要大於long,double
二.使用BigInteger大容量運算類
view plain to clipboardprint?
import java.math.BigInteger;
public class Test {
public static void main(String[] args) {
BigInteger result = new BigInteger("1");//為result賦初始值,為1
for (int i = 1; i <= 100; i++) {
BigInteger num = new BigInteger(String.valueOf(i));
result = result.multiply(num);//調用自乘方法
}
System.out.println(result);//輸出結果
System.out.println(String.valueOf(result).length());//輸出長度
}
}
import java.math.BigInteger;
public class Test {
public static void main(String[] args) {
BigInteger result = new BigInteger("1");//為result賦初始值,為1
for (int i = 1; i <= 100; i++) {
BigInteger num = new BigInteger(String.valueOf(i));
result = result.multiply(num);//調用自乘方法
}
System.out.println(result);//輸出結果
System.out.println(String.valueOf(result).length());//輸出長度
}
}
計算結果為:000000000000000000
產度:158
⑻ java中100的階乘如何寫
樓上用的方法好像不是遞歸吧,我也不知道我寫的對不,讓樓主來挑吧
public class OneToH
{
private static int i = 1;
private static int sum = 0;
/**
* @param args
*/
public static void main(String[] args)
{
System.out.println(recursion());
}
public static int recursion()
{
sum = i*(i+1);
i++;
if(i==100)
{
return sum;
}
else
recursion();
return sum;
}
}
⑼ 1-100階乘之和(java程序)
親,java的界面不太受歡迎哦~~大概按你要求做了,看看吧~~import java.awt.BorderLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JEditorPane;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTextArea;public class yoyo extends JFrame{public static void main(String[] args){yoyo yo=new yoyo();yo.show();}public yoyo(){setDefaultCloseOperation(EXIT_ON_CLOSE);//設置退出時結束程序setTitle("計算階層和");setSize(400, 250);setLocation(100, 100);//坐標//把控制項實例化final JEditorPane edit=new JEditorPane();final JButton button=new JButton("計算和");final JTextArea area=new JTextArea(null, "", 8, 18);JPanel myPanel1=new JPanel();//這個是第一行的布局myPanel1.add(new JLabel("請輸入整數n:"),BorderLayout.WEST);myPanel1.add(edit,BorderLayout.CENTER);myPanel1.add(button,BorderLayout.EAST);JPanel myPanel2=new JPanel();//這個是第二行的布局myPanel2.add(new JLabel("1至n的階乘和是:"),BorderLayout.WEST);myPanel2.add(area);//把上面的布局加入畫布中this.add(myPanel1,BorderLayout.NORTH);this.add(myPanel2,BorderLayout.CENTER);//上面已經把界面做出來了,接下來監聽按鈕button.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent arg0) {int n=Integer.valueOf(edit.getText());//得到edit里的值nint result=0;for(int i=1;i<=n;i++){int a=1;for(int j=1;j<=i;j++){a*=j;}result+=a;}area.setText(result+"");}});}}下面效果圖:
⑽ java中怎麼樣用遞歸寫100的階乘 不能 用int和double型 也不可以使用第三方 的類
import java.math.BigInteger;
public class Factorial {
public static BigInteger factorial (BigInteger num) {
if (num.equals(BigInteger.ONE) || num.equals(BigInteger.ZERO))
return BigInteger.ONE;
return (num.subtract(BigInteger.ONE).multiply(factorial(num)));
}
public static void main (String args[]) {
System.out.println("100! = " + factorial(new BigInteger("100")));
}
}