您好我当前很难理解执行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
*/
答案 0 :(得分:0)
当条件满足时(因为阵列数组中彼此相邻的两个5)
array[j] == array[j+1]
并且你将你的标志设置为true,变量j再次增加,因此j和count之间的差异。
答案 1 :(得分:0)
if
声明和else
在{
和}
内没有正文意味着条件if
或else
只有下一个命令被执行。
所以,在你的情况下,在循环内部:
if (array[j] == array[j+1] )
flag=true;
else count++;
++j;
发生这种情况,如果if
为真,则将flag设置为true,否则,将计算count
。
语句j++
在循环的每次迭代中执行,因为它不受if
和else
对的影响。
这可能是这里的混乱。