2017-03-19 8 views
-3

bの出力は、コードを読み取ることから期待された出力は0でした。代わりに1を得ました。 誰もこの出力に到達する方法を説明できますか?単純なプログラムの出力を決定する

int a=5, b=6, c=1; 
    double x=0.5, y=1.0, z=1.5; 
    c = fcn1(a, b); 
    y = fcn2(y, a); 
    b = fcn3(x, y); 
    z = fcn3(c, b); 
    System.out.println("a="+a+", b="+b+", c="+c); 
    System.out.println("x="+x+", y="+y+", z="+z); 
    } 
    static int fcn1(int i, int j){ 
    int k = i-j; 
    return (++k); 
    } 
    static double fcn2(double t, int n){ 
    return (t*n); 

    } 

    static int fcn3(double u, double v){ 
    return fcn1((int)(u*v), 2); 
    } 
    static double fcn3(int r, int s){ 
    return fcn2(r,s); 
+0

私は**のための** 1 **はあなたが0を得たか? –

+1

ようこそスタックオーバーフロー!デバッガの使い方を学ぶ必要があるようです。 [補完的なデバッグ手法](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)にご協力ください。その後も問題が残っている場合は、問題を示す[最小限の、完全で実証可能な例](http://stackoverflow.com/help/mcve)に戻ってください。 –

+0

@YCF_L \t ああ、私はコードだけを読んでいたのですが、私は0を持っていました...ここにいくつかの点がありませんが、どこが分かりませんか。 – Xerxex

答えて

0

出力
a=5, b=1, c=0
x=0.5, y=5.0, z=0.0

コード

import java.io.*; 
import java.util.*; 
public class Main 
{ 
    public static int fcn1(int i, int j){ 
     int k = i-j; 
     return (++k); 
    } 
    public static double fcn2(double t, int n){ 
     return (t*n); 
    } 
    public static int fcn3(double u, double v){ 
     return fcn1((int)(u*v), 2); 
    } 
    public static double fcn3(int r, int s){ 
     return fcn2(r,s); 
    } 
    public static void main(String[] args) 
    { 
     int a=5, b=6, c=1; 
     double x=0.5, y=1.0, z=1.5; 
     c = fcn1(a, b); //c=0 
     y = fcn2(y, a); //y=5.0 
     b = fcn3(x, y); //b=fcn1((int)2.5, 2) //b=1 
     z = fcn3(c, b); //z=c*b    //z=0.0 
     System.out.println("a="+a+", b="+b+", c="+c); 
     System.out.println("x="+x+", y="+y+", z="+z); 
    } 
} 
0

私はあなたにヒントを与えるだろう、とあなたはあなたの自己とそれを理解します:

あなたが唱えたとき、あなたは、例えば、自然だけの一部を取得しますdoubleintに:

double d = 2.5; 
int i = (int) d; 
//i in this case equal to 2 and not 2.5 

このこの方法では、ここで行われます。この時点の後

static int fcn3(double u, double v) { 
    return fcn1((int) (u * v), 2);//u = 0.5 v = 5.0 ## 0.5 * 5.0 = 2.5 ## (int) 2.5 = 2 
    //-----------------------------------^^------^^-----------------^^----------------^ 
} 

すべての計算が簡単です:

static int fcn1(int i, int j) { 
    int k = i - j; // i = 2 ## j = 2 ## 2 - 2 = 0 
    return (++k);//++0 = 1 <--------------------b 
} 
+0

ああ!私はyの新しい値を使用するのを忘れて、代わりに1.0を使用しました!ありがとうございました ! – Xerxex

+0

ようこそ@Xerxex –

関連する問題