这将是我晚上和暂时的最后一个问题。我已经通过100分的Java评估工作,现在我仍然坚持最后两点。如果有人能帮助我,我将不胜感激。我累了,感觉像是一个A级的小块,只是想要它结束!
研究下面的两个实例方法,然后只选择正确的选项。
public char[] methodA()
{
char[] alphas = {'s', 't', 'e', 'a', 'm'};
char temp = alphas[0];
int i = 0;
while (i < alphas.length - 1)//1
{
alphas[i] = alphas[i+1]; //2
i++;
}
alphas[alphas.length-1]=temp;
return alphas;
}
public char methodB()
{
char [] alphas = {'s','a','u','s','a','g','e'};
char first = alphas[0];
for (int i= 1; i < alphas.length; i++) //3
{
if (alphas[i] < first) //4
{
first = alphas[i];
}
}
return first;
}
标记为// 2的赋值语句将放置char的副本 元素一到alphas中当前元素的右边 alphas中的当前元素。
标记为// 3的for循环标题将被评估7次。
标记为// 4的if语句将更新该值所持有的值 如果当前元素中的值保存在alphas中,则首先变量 在第一个当前值之前。
标记为// 1的行中的布尔条件将计算为 反复犯错,直到我取值4.
调用methodA的返回值是一个包含的char数组 值't','e','a','m'和's'。
调用methodB的返回值是字符'u'。
我相信1是真的。不知道为什么。 我认为2是错误的,因为for循环被评估为6x而不是7。 3或4不确定。 5我必须是真的 6我必须是假的。
如果有人可以帮忙,我欠他们一杯啤酒,一块饼干和一个拥抱!!
答案 0 :(得分:1)
这是真的,因为alphas[i] = alphas[i+1]
基本上会将位置放在i
位置,并将其替换为i + 1
数组中的下一个元素(或另一种说法,它的相邻元素)。
我认为这是错误的,此处的关键字为evaluated
。循环将评估到停止点,检查退出条件,然后踢出。所以它将完成评估1,2,3,4,5,6, 7 &lt; ---评估价值并踢出
这是真的。表达式if (alphas[i] < first)
询问first
中存储的值是否大于alphas[i]
中的值,或反过来......如果alphas[i]
小于first
。这基本上是执行最大/最小算法,因为first
中的最终数字将是alphas
数组中的最小值。在这种情况下,将根据其ascii值评估字母。
这是假的。表达式将评估为真,直到4.如果不是这样,则问题1将不正确,因为它只会抛出IndexOutOfBoundsException
。
这是事实,因为它将相邻的char放在当前位置,然后行alphas[alphas.length-1]=temp
将第一个char放入最后一个位置。更具体地说,稍后您的数组将如下所示:{ t, e, a, m, m }
然后在最后一行之后,它将使用{ t, e, a, m, s }
最后一个是假的。就像我在问题3中提到的那样,它实际上是在进行最小搜索。字符u
具有比序列中任何其他字母更大的值ascii值。 a
是该集中的最低字母。
努力尝试。
答案 1 :(得分:0)
1为真(a [i + 1]在a [i]的右边,所以a [i] = a [i + 1]将右边的值复制到当前)
2是正确的,因为循环条件被评估7次 - 6次为真导致身体执行6次,然后1次为假以打破循环。
3听起来是真的,像'b'这样的值被认为是“来之前”像'd'这样的值(比较数字ascii代码)
4是正确的,因为条件4&lt; (5 - 1)是假的
5你的想法是正确的
6是假的 - 应该返回'a'
请跳过拥抱!