2015-05-01 64 views
0

我是Java編程的初學者。當我編寫一個簡單的控制檯應用程序時,它提供了一個不是我想要的輸出。我的代碼是:錯誤的雙輸出輸出

class myClass{ 
    public static void main(String[] args) { 
     int ballsPlayed = 100; 

     double o = (double)((ballsPlayed/6) + ((ballsPlayed % 6)/10)); 
     System.out.println(o); 
    } 
} 

((ballsPlayed % 6)/10)應該是0.4的,因爲剩餘100/6 4和4/10必須給予0.4。那麼變量'o'必須給出16.4(16 + 0.4)。但是我得到了16.0作爲控制檯的輸出。我犯的錯誤是什麼?

+1

你是什麼意思?「它給了一個不想要的輸出」?是否有錯誤,答案與你期望的不同? – Kmeixner

+0

實例化時,double不需要有小數點:)你可以聲明'double ballsPlayed = 100;' – CubeJockey

回答

1

由於ballsPlayed是一個整數,所以您必須輸入ballsPlayeddouble。它返回(ballsPlayed % 6)/10的整數部分。因此,除了0.4,你得到了0。

試試這個,

double o = (double)((ballsPlayed/6) + ((double) (ballsPlayed % 6)/10)); 

在這裏,你會得到16 + 0.4 = 16.4

0

((ballsPlayed % 6)/10))輸出爲0不是0.4,因爲在這裏所有的值是int。對於/操作,您需要一個雙精度值以獲得double輸出。爲了得到所需的輸出變化像

((double)(ballsPlayed % 6)/10)) 

((ballsPlayed % 6)/10.0)) // Make 10 as double 
1

剛剛從intballsPlayed變量更改爲

double ballsPlayed = 100; 

這將消除對多種類型轉換的需要。 ((ballsPlayed%6)/ 10))的輸出將爲0而不是0.4,因爲編譯器正在處理一個int值。

0

您的問題,從這裏開始 ballsPlayed/6

的整數除以整數給出一個整數 - 鑄造它的兩倍爲時已晚,你只得到一個double表示,如果從第一個整數除法

截斷結果

如果您想從中得到分數結果,您需要將計算中涉及的數字之一轉換(或聲明)爲浮點數據類型。

這幾乎是每一個什麼別人說....

0

ballsPlayed爲int所以默認ballsPlayed/6會給你詮釋才讓是16類似與ballsPlayed % 6的情況下,這將給int和再由10師會給INT這將導致0

在這裏,你想先師爲int和第二師被視爲雙..所以只是把鑄件第二操作

double o = ((ballsPlayed/6) + (((double)ballsPlayed % 6)/10)); 

這裏ballPlayed%6將是4和(double)ballsPlayed%6)將是4.0,雙倍。你也可以在分割後進行鑄造

double o = ((ballsPlayed/6) + ((double)(ballsPlayed % 6)/10));