2014-09-12 17 views
0

我剛開始用Standford課程學習Java。正如你可能知道的每一章都教你如何創建程序來解決問題。我總是傾向於通過根據我們在課程中獲得的內容創建新問題來多練習一點。
作爲im學習聲明我試圖創建一個程序,乘n 10次。所以這將是n * n * n ...等等......
它可以工作,但我想知道是否有更簡單的方法來解決這個問題。 這是我的代碼。Java中乘以10次(初學者)

/*This program multiplies an n number 10 times. 
* 
*/ 

import acm.program.ConsoleProgram; 

public class LiftOff extends ConsoleProgram { 

    public void init() { 
     setSize(height,width); 
    } 

    private static final int height = 600; 
    private static final int width = 600; 

    public void run() { 
     println ("This program multiplies a number 10 times"); 
     double x= readInt("Number: "); 

     double stop = x * x * x * x * x * x * x * x * x * x * x; 

     for (double x1 = x ; x1 <= stop; x1*= x) { 
      println (x1); 
     } 

     println("Done"); 
    } 
} 

我使用雙打因爲int會消極。我試圖讓雙停= xE + 10,但它不起作用。除此之外的任何解決方案都基於迄今爲止所瞭解的內容。考慮到這個使用acm庫。

謝謝。

+0

你可以在[Code Review](http://codereview.stackexchange.com/)上發表。 *代碼審查是一個問題和答案網站,用於分享您正在從事的項目的代碼 * – Kara 2014-09-12 17:22:46

+1

如果輸入足夠大,請考慮使用'long'或'BigInteger'。 – user1071777 2014-09-12 17:24:18

+1

這相當於將數字提高到第10次方,並且java.lang.Math中內置了一個方法來完成此操作(對於某些問題域它是一個常見操作):Math.pow(number,10); – Durandal 2014-09-12 17:24:47

回答

1

只需從19循環,每次乘以初始值x本身。

double x= readInt("Number: "); 
double result = x; 

for(int i = 1; i <= 9; i++) 
    result *= x; 
+0

您正在使用x而不是i作爲變量。 「int i = 1」是正確的語法 – dganesh2002 2014-09-12 17:25:44

+1

是啊謝謝指出。速度受害者:P。我糾正了它 – qbit 2014-09-12 17:26:48

+0

這很像一個魅力,非常感謝。 – Guillermo 2014-09-12 19:39:46

0
double number = 5; //readDouble("Number: "); 
    double total = number; // == number*1 
    for (int i = 0; i < 9; i++) 
     total = total * number; 
    System.out.println(total); 
0

您計算結果兩次(第一次與停止)。如果你想計算n^1000,你會怎麼做?有簡單得多:

int pow = 10; 
int n = 3; 
int res = 1; 
for (int i=0 ; i<pow ; i++) 
    res *= n; 

它可能是一個有點先進的初學者,但你可能有興趣知道,有更快的方法來計算^ B。看看fast exponentiation