例子问题
问题2:标准数据结构
考虑下面的代码:
Int I = 55, j = 3;
system . out。Println ((i / j + 3) / 5);
上面代码的输出是什么?
代码中有一个错误。
小心!这是整数除法。因此,对于每一个除法,你将失去你的小数点。因此:
I / j等于,但它变成了。
然后,你将拥有。再一次,你丢掉小数点,得到结果是。
问题2:Int
下列哪一项能保证除法不丢失小数部分?
没有一个答案是正确的。
Double d = (Double)(55/3);
双d = 1.0 * 55 / 3;
双d = 55 / 3;
Double d = (Double)((int)55 / (int) 3);
双d = 1.0 * 55 / 3;
记住这一点,只要一个一个乘法/除法集合的元素是一个浮点值,整个都是一个浮点值。因此,正确答案是:
双d = 1.0 * 55 / 3;
你需要计算右边的值:
1.0 * 55将变成55.0。这将在除法中以双精度数结束,并将该值存储在d中。
请注意,以下操作不起作用:
Double d = (Double)(55 / 3);
这段代码将首先做整数除法55 / 3。这将解析为18。只有这样才会出现双强制转换。这将给你18.0,而不是18.33333…
问题3:Int
考虑下面的代码:
Int I = 100;
Double d = 4.55, d2 = 3.75;
Int j = (Int)(d * 100 + d2);
的值是多少j在代码执行的最后?
458
399
459
403
411
458
不要想太多。首先对表达式求值:
D * 100 + d2
这和:
现在,这个值被强制转换为整数:
(int) (458.75)
请记住,当从双精度值类型转换为整数时,要完全去掉小数点。不能四舍五入或四舍五入。你只要把它截断。因此,答案是458。
问题1:基本数据类型
考虑下面的代码:
Int I = 3;
For (int j = 5;J > 0;j () {
I += I;
}
它的价值是什么我在这个循环的迭代结束时?
729
24
96
48
243
96
所讨论的循环执行forj取值为5 ~ 1。因此,您将执行5次。对于每个循环,你将得到:
I = 3 + 3 = 6
I = 6 + 6 = 12
I = 12 + 12 = 24
I = 24 + 24 = 48
I = 48 + 48 = 96
最后一个值就是您的答案!
问题1:标准数据结构
考虑下面的代码:
Int I = 5, p = 27;
For (int 1 = 23;L < p;l + +) {
I *= (l - 22);
}
它的价值是什么我
在上面代码的末尾?
75
0
5
120
150
120
您总是可以手动跟踪代码中的循环。你知道它会从L = 23
来L = 26
。回想一下,* =
可以改写为:
I = I * (l - 22)
现在,让我们考虑第一个循环。对于这个,我们应该:
I = 5 * (23 - 22) = 5 * 1
现在,我们来计算一下我
对于从23到26的每个循环:
23: 5
24: 5 * (24 - 22) = 5 * 2 = 10
25: 10 * (25 - 22) = 10 * 3 = 30
26: 30 * (26 - 22) = 30 * 4 = 120
问题1:基本数据类型
考虑下面的代码:
Int val = 205;
For (int I = 0;I < 5;我+ +){
Val /= 2;
}
在执行结束时,变量的值是多少瓦尔
在上面的代码中?
6
6.40625
12
25
5.90225
6
回想一下,运算符/ =
可以改写为:
Val = Val / 2;
现在,回想一下整数除法去掉了小数部分总是
。因此,这个程序将循环5次,做除法瓦尔
每次2。这会给你:
问题1:标准数据结构
以下哪个变量赋值不是有效的赋值语句?
A. 15 = x - 15;
B. num = x * y;
C. x = y + 15
D. x + y = 15
b, c
,维
d、c
一个
d
,维
A. 15 = x - 15;
不能给整数赋值,因为它们不是变量,也不存储信息。
D. x + y = 15
该语句不将值赋给单个整数,因此,它不是有效的变量赋值。
问题8:Int
参考下面的代码行:
双d = -4.73;
下面哪个选项可以将d舍入到最接近的整数?
int rounddednumber = (int) (d+ 0.5)
int roundedNumber = Math.abs(d);
int rounddednumber = (int) (d - 0.5)
int roundedNumber = (int) Math.abs(d);
int roundedNumber = Math.abs((int) (d))
int rounddednumber = (int) (d - 0.5)
答案是(int) (d - 0.5),因为您希望将roundNumber设置为-5,并且将double类型的负数转换为int会将数字四舍五入到更大的整数。
abs(d)返回d的绝对值,不会类型转换为int。此选项将抛出不兼容类型编译器错误。
如果将(int)强制转换加到Math.abs(d)中,则会将数字取底,或者将d四舍五入到4。
语句int roundedNumber = (int) (d+.5)将把。5加到-4.67上,得到(int) -4.17。这将导致roundedNumber被设置为-4,因为将负双精度型转换为int实际上会执行一个封顶操作(例如(int) -4.99仍然是-4)。
最后,int roundedNumber = Math.abs((int) (d))将d强制转换为-4,并接受-4的绝对值,结果为4。
问题11:标准数据结构
假设你得到以下代码行:
整数a = new Integer(10);
Integer b = new Integer(4);
下面哪几行不会产生错误?
I. if (a.intValue() == b.intValue())
II if ((a.toString()).equals(b.toString()))
III if ((a.intValue()).equals(b.intValue()))
I和II
我
3
I, ii, iii
2
I和II
答案是I和II。
可以使用==操作符比较基本类型(这里我们比较的是int),因此语句I不会抛出错误。语句二也不会抛出错误,因为.equals方法允许你将两个字符串相互比较。但是,不能在int上调用方法,因此语句III将导致错误。