我是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作为输出。我犯了什么错误?
答案 0 :(得分:1)
您必须将ballsPlayed
与double
进行类型转换,因为ballsPlayed
是一个整数。它返回(ballsPlayed % 6) / 10
的整数部分。因此除了0.4之外你得到0。
试试这个,
double o = (double)(( ballsPlayed / 6 ) + ((double) ( ballsPlayed % 6) / 10 ));
这里你将获得16 + 0.4 = 16.4
答案 1 :(得分:1)
只需将ballsPlayed
变量从int
更改为
double ballsPlayed = 100;
这将消除多个演员阵容的需要。 ((ballsPlayed%6)/ 10))的输出将为0而不是0.4,因为编译器正在处理int值。
答案 2 :(得分:0)
(( ballsPlayed % 6) / 10 ))
的输出为0而不是0.4,因为此处的所有值均为int
。 /
操作需要一个double值才能获得double
输出。获得所需的输出更改,如
( (double)( ballsPlayed % 6) / 10 ))
或
(( ballsPlayed % 6) / 10.0 )) // Make 10 as double
答案 3 :(得分:0)
你的问题从这里开始
ballsPlayed / 6
整数除以整数给出一个整数 - 将它转换为加倍为时已晚,如果第一个整数除法的截断结果
,你只会获得double
表示
如果要从中获得小数结果,则需要将计算中涉及的数字之一(或声明)转换为浮点数据类型。
这几乎是其他人所说的......
答案 4 :(得分:0)
@CucumberOptions(features="target/")
public class CucumberRunner() {
@BeforeClass
public void getFeatures() {
//get the files from server
//save them to /target/, mark them as temporary
}
}
是int,所以默认情况下ballsPlayed
只会给你int,这样就是16.类似的情况是ballsPlayed/6
会给出int并且再次除以10会给出int这将导致0。
在这里你希望第一个分区是int,第二个分区被视为double .. 所以只需将第二个分区的转换为
ballsPlayed % 6
这里的ballPlayed%6将是4而(double)ballsPlayed%6)将是4.0,一个双倍。你也可以在分裂后进行施法
double o = (( ballsPlayed / 6 ) + ( ( (double)ballsPlayed % 6) / 10 ));