了解while循环和System.out.println的执行结果

时间:2013-12-07 19:47:36

标签: java

您好我当前很难理解执行while循环所涉及的过程,并添加了添加的数组。我理解数组和循环只是困难在于理解这一行代码。我搜索了我能想到的每一个来源,但似乎没有什么能帮助我更好地理解它。我在Eclipse中运行代码,答案显示在我的控制台中。我只是想不通他们是如何被处理的。我真的很感激有人可以帮助我,谢谢。

      import javax.swing.JApplet;


     public class SystemExecutions extends JApplet
     {
     int x=1, y=-5, z=4; // global variables 
     int vals[] = {-6,2,-4,-8 ,-2,-3}; // global variables 

      public void init()
      {
     setView();///execution results 
     setValues();///Exact output 
      }

   public void setView()//////////////////////////////execution results 
  { boolean flag = false; 
  int count = 0; int j=0; 
  int array[] = { 5, 3, 5, 5, 3, 5}; 
  System.out.println( ); 
  while ((!flag) && (j < array.length-1)) 
  { if (array[j] == array[j+1] ) 
  flag=true; 
  else count++; 
  ++j; 
  System.out.println("flag " + flag + " J " + j 
  + " count "+ count); 
  } 
  System.out.println("flag " + flag + " J " + j 
  + " count "+ count); 
  } 
         /*Ouput:
            flag false J 1 count 1
            flag false J 2 count 2
            flag true J 3 count 2
            flag true J 3 count 2
         */


   public void setValues()////////////////////////////Exact output 
     {char y = 'R'; 
    z=10; 
    System.out.println("l1: "+x+" "+y+" "+z); 
    y=call1(x,y,z); 
    System.out.println("l2: "+x+" "+y+" "+z); 
    x=call2(x,vals); 
    System.out.println("l3: "+x+" "+y+" "+z); 
    for (int i=0; i<3; i++) 
        System.out.println("l"+(i+4)+": "+vals[i*2]); 
      } 
      public char call1(int a, char b, int c) 
      {if (a >= c) return b; 
        else 
     { c=15; 
     z=25; 
     return 'M'; // note the single quotes 
      } 
     } 
     public int call2(int x, int [] anArray) 
     {int y = 0; 
    for (int i=anArray.length-1; i>=0; i--) 
    {if (anArray[i] > x) 
    {anArray[i] = x + 5;y++;} 
     } 
        x=100; 
     return y; }

     }
        /*Output:
            l1: 1 R 10
            l2: 1 M 25
            l3: 1 M 25
            l4: -6
            l5: -4
            l6: -2
          */

2 个答案:

答案 0 :(得分:0)

当条件满足时(因为阵列数组中彼此相邻的两个5)

array[j] == array[j+1]

并且你将你的标志设置为true,变量j再次增加,因此j和count之间的差异。

答案 1 :(得分:0)

if声明和else{}内没有正文意味着条件ifelse只有下一个命令被执行。

所以,在你的情况下,在循环内部:

if (array[j] == array[j+1] ) 
  flag=true; 
  else count++; 
  ++j; 

发生这种情况,如果if为真,则将flag设置为true,否则,将计算count。 语句j++在循环的每次迭代中执行,因为它不受ifelse对的影响。

这可能是这里的混乱。