为什么b = 1而不是b = -1?

时间:2017-04-23 23:00:37

标签: java

我的教授给了我们这段代码:

import java.util.Scanner;
import java.io.*;
class Problem1{
 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);
 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);
 }
}

当你运行它时,输出是:

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

我不明白为什么b = 1所以我做了一个单独的文件来解决b:

class p1 {
 public static void main(String [] args){
  int a=5, b=6, c=1;
  double x=0.5, y=1.0, z=1.5;
  b= fcn3(x,y);
  System.out.println("b="+b);
  }
  static int fcn1(int i, int j){
   int k = i-j;
   return (++k);
  }

  static int fcn3(double u, double v){
   return fcn1((int)(u*v), 2);
  }
}

当我运行它时,我得到b = -1 我不明白,帮忙吗?

2 个答案:

答案 0 :(得分:1)

在你的教授代码中,y = fcn2(y,a); y变为5,在源代码中,y = 1.0

//Professor Code
//Initial value y= 1.0, but after this line

**y = fcn2(y, a);**  

enter image description here     enter image description here

 //y = 5;

b = fcn3(x, y);   //y = 5;

//您的代码

b = fcn3(x,y); 

答案 1 :(得分:0)

在fcn3()中,传递.5和1,然后将它们相乘,即.5,然后将其转换为int,将其降为0,因此fcn1()得到0和2,0-2 = -2,1 + -2 = -1,最后分配给b。