'if'和'for'循环问题

时间:2011-10-27 01:45:52

标签: if-statement for-loop while-loop

这将是我晚上和暂时的最后一个问题。我已经通过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;
}
  1. 标记为// 2的赋值语句将放置char的副本 元素一到alphas中当前元素的右边 alphas中的当前元素。

  2. 标记为// 3的for循环标题将被评估7次。

  3. 标记为// 4的if语句将更新该值所持有的值 如果当前元素中的值保存在alphas中,则首先变量 在第一个当前值之前。

  4. 标记为// 1的行中的布尔条件将计算为 反复犯错,直到我取值4.

  5. 调用methodA的返回值是一个包含的char数组 值't','e','a','m'和's'。

  6. 调用methodB的返回值是字符'u'。

  7. 我相信1是真的。不知道为什么。 我认为2是错误的,因为for循环被评估为6x而不是7。 3或4不确定。 5我必须是真的 6我必须是假的。

    如果有人可以帮忙,我欠他们一杯啤酒,一块饼干和一个拥抱!!

2 个答案:

答案 0 :(得分:1)

  1. 这是真的,因为alphas[i] = alphas[i+1]基本上会将位置放在i位置,并将其替换为i + 1数组中的下一个元素(或另一种说法,它的相邻元素)。

  2. 我认为这是错误的,此处的关键字为evaluated。循环将评估到停止点,检查退出条件,然后踢出。所以它将完成评估1,2,3,4,5,6, 7 &lt; ---评估价值并踢出

  3. 这是真的。表达式if (alphas[i] < first)询问first中存储的值是否大于alphas[i]中的值,或反过来......如果alphas[i]小于first。这基本上是执行最大/最小算法,因为first中的最终数字将是alphas数组中的最小值。在这种情况下,将根据其ascii值评估字母。

  4. 这是假的。表达式将评估为真,直到4.如果不是这样,则问题1将不正确,因为它只会抛出IndexOutOfBoundsException

  5. 这是事实,因为它将相邻的char放在当前位置,然后行alphas[alphas.length-1]=temp将第一个char放入最后一个位置。更具体地说,稍后您的数组将如下所示:{ t, e, a, m, m }然后在最后一行之后,它将使用{ t, e, a, m, s }

  6. 完成该集合
  7. 最后一个是假的。就像我在问题3中提到的那样,它实际上是在进行最小搜索。字符u具有比序列中任何其他字母更大的值ascii值。 a是该集中的最低字母。

  8. 努力尝试。

答案 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'

请跳过拥抱!