黑马程序员技术交流社区
标题:
if elseif elseif ...else 与if if if... 连用的区别
[打印本页]
作者:
2012
时间:
2013-9-8 13:40
标题:
if elseif elseif ...else 与if if if... 连用的区别
本帖最后由 杨增坤 于 2013-9-11 17:25 编辑
if elseif elseif ...else 与if if if... 连用的区别
定义一个静态方法用于打印二维数组
输出结果:arr={[3,5,5,8], [7,9], [12,5,8], [13,34,27,7,9], [45,6,-1,3,7]}
//1、定义一个静态方法用于打印二维数组
public static void printArr_2(int[][] arr)
{
for(int i=0; i<arr.length; i++)
for(int j=0; j<arr
.length; j++)
{
if(i==0 && j==0)
System.out.print("arr={["+arr
[j]+",");
else if(i!=0 && j==0)
System.out.print(" ["+arr
[j]+",");
else if(i==arr.length-1 && j==arr
.length-1)
System.out.println(arr
[j]+"]}");
else if(i!=arr.length-1 && j==arr
.length-1)
System.out.println(arr
[j]+"],");
else
System.out.print(arr
[j]+",");
}
}
}
// 2、定义一个静态方法用于打印二维数组
public static void printArr_2(int[][] arr) {
for (int i = 0; i < arr.length; i++)
for (int j = 0; j < arr.length; j++) {
if (i == 0 && j == 0)
System.out.print("arr={[" + arr[j] + ",");
if (i != 0 && j == 0)
System.out.print(" [" + arr[j] + ",");
if (i == arr.length - 1 && j == arr.length - 1)
System.out.println(arr[j] + "]}");
if (i != arr.length - 1 && j == arr.length - 1)
System.out.println(arr[j] + "],");
System.out.print(arr[j] + ",");
}
}
}// 两个方法答应的结果相同吗?
复制代码
作者:
EYE_SEE_YOU
时间:
2013-9-8 13:47
要注意排版问题
作者:
静心鱼
时间:
2013-9-8 21:12
本帖最后由 静心鱼 于 2013-9-8 21:36 编辑
<blockquote>class Demo
复制代码
你使用if 判断时 最后一句打印语句是不受if语句控制的。
无论上面的if语句块是否执行,最后的打印语句都会循环一次执行一遍。
而当你使用 if eles 语句时,可将这部分代码看做一个整体 只有当条件满足时执行相对应的语句,都不满足,则执行else后的语句。
顺便说一句 哥们你原来的语句中 大循环后面都少了大括号 数组定义的大括号里面也是大括号不应该是中括号。
作者:
静心鱼
时间:
2013-9-8 21:37
囧 不知道为什么编辑一下代码都没了 再发一遍吧、
class Demo
{
public static void main(String[ ] args)
{
int[ ][ ] arr =new int[ ][ ]{ { 3, 5, 5, 8 } , { 7, 9 } , { 12, 5, 8 } , { 13, 34, 27, 7, 9} , { 45, 6, -1, 3, 7 } };
Demo.printArr_2( arr ) ;
}
public static void printArr_2(int[ ][ ] arr)
{
for(int i = 0; i < arr.length; i++){
for(int j = 0; j < arr[ i ].length; j++){
if( i == 0 && j == 0)
//当a = 0 且 b = 0 时打印 ,即打印arr[ 0 ][ 0 ];
{
System.out.print("arr={ {"+arr[ i ][ j ]+",");
}
if( i != 0 && j == 0)
//当a 不等于 0 时 且 b = 0 时 打印, 即打印 arr[ 1 ][ 0 ],arr[ 2 ][ 0 ],arr[ 3 ][ 0 ],arr[ 4 ][ 0 ],
{
System.out.print(" { "+arr[ i ][ j ]+",");
}
if( i == arr.length-1 && j == arr[ i ].length-1)
//当i = arr.length - 1时 且 j = arr[ i ].length - 1 时,即i = 4, j = 4 时打印 arr[ 4 ][ 4 ]
{
System.out.println(arr[ i ][ j ]+" } } ");
}
if( i != arr.length-1 && j == arr[ i ].length-1)
//当 i 不等于 4 且 j 分别等于 3,1,2,4,时打印arr[ 0 ][ 3 ],arr[ 1 ][ 1 ], arr[ 2 ][ 2 ],arr[ 3 ][ 4 ];
{
System.out.println(arr[ i ][ j ]+" } ,");
}
//可以看到运行结果中,符合上面任意判断条件的数据项被打印了两遍。不符合的则打印了一边。
System.out.print(arr[ i ][ j ]+","); //打印二维数组的所有数据。
}
}
}
/*
public static void printArr_2( int[ ][ ] arr)
{
for(int i = 0; i < arr.length; i++)
{
for(int j = 0; j < arr[ i ].length; j++)
{
if( i == 0 && j == 0)
System.out.print("arr={ {"+arr[ i ][ j ]+",");
else if( i != 0 && j == 0)
System.out.print(" { " + arr[ i ][ j ] + ",");
else if( i == arr.length-1 && j == arr[ i ].length-1)
System.out.println(arr[ i ][ j ] + "} }");
else if( i != arr.length-1 && j == arr[ i ].length-1)
System.out.println(arr[ i ][ j ] + "},");
else
System.out.print(arr[ i ][ j ] + ",");
}
}
}
*/
}
复制代码
作者:
张凡
时间:
2013-9-8 21:54
if if...连用时,每个if语句都得执行,elseif elseif...else连用时,前面的elseif语句里的条件为true执行当前的语句块,不再执行后面的elseif语句。
作者:
辛春鹏
时间:
2013-9-8 21:54
不一样吧
if(1)
{a}
if(2)
{b}
if(3)
{c}
如果是这样的话,判断1之后,如果满足,执行a;然后继续向下执行。会继续判断2,如果为true就会执行b。。。。。。如此向下
if(1)
{a}
else if(2)
{b}
else if(3)
{c}
else{d}
如果是这样的话,就是a,b,c,d这四个表达式只会有一个执行的。前面的条件语句满足哪个就对应执行{}中的表达式。前面3个条件表达式都不满足的时候,就会执行d
作者:
陶智第
时间:
2013-9-8 23:00
执行的结果应该是一样的
但两种方法的执行过程是不一样的
第一种方式:每一次循环过程中程序遇到符合条件的就执行当前语句,而后面的语句就不会再执行了
第二种方式:每一次循环过程中程序遇到符合条件的就执行当前语句,但后面的语句也要执行
相比较而言,第一种方式效率更高,消耗的资源也较小
作者:
杨增坤
时间:
2013-9-9 19:51
楼主,你好,如果您的问题解决了!
请把您问题的
未解决
更改为
已解决
!
谢谢合作!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2