【Java学习笔记】基础知识学习3【基本循环方法技巧】

晚上了,按照承诺开始继续写:

按照书上的顺序,现在我开始看循环的内容。

也就是for,while循环

package sunsoft.testideas;

public class Ex_forloop {
	void LoopTest(){
		int i,totalnum=0;
		for(i=1;i<101;i++){
			totalnum=totalnum+i;
		}
		System.out.println("计算结果是:"+totalnum);
	}
}

这个是一个简单的定义一个整形变量,并且进行1到100的加法,得到了和高斯小时候一样的结果。

这里小小的提一下:

输出一段文字,使用的是 System.out.println,很麻烦。

毕竟打字打出这么长一串,即使使用自动提示的功能也不是很方便。

所以,我一般是在工程里面建立一个类,加上一个静态方法,专门用来显示字符串。这个类和它的方法我用很简单的字符来表示。可以极大的提高代码编写速度。

例如,将

System.out.println
换成

T.O

方便又简单,调用方法如下:

System.out.println("I Love China");

或者

T.O("I Love China");
接下来所有代码中的文字输出都会使用T.O来代替

接下来是while循环:

package sunsoft.testideas;

public class Ex_WhileLoop {
	void TestWhileLoop(){
		int i=1;
		int sum=0;
		while(i<101){
			sum+=i;
			i++;
		}
		T.O("while结果是:"+sum);
	}
}
这个也是一个1加到100的求和计算。使用的while,其语法与C语言完全一致。

接下来,是一个Do……While的循环:

package sunsoft.testideas;
public class Ex_DoWhileLoop {
	void Test_DoWhileLoop(){
		int i=1;
		int sum=0;
		do{
			sum+=i;
			i++;
		}while(i<101);
		T.O("dowhile结果是:"+sum);
	}
}





同样,这个的语法也是与C语言相同的。接下来是结束本次循环的语句continue。循环的执行是从循环体的第一条语句执行到循环体的最后一条语句。这里的continue语句的目的就是从出现continue的地方开始,直接跳回循环体的头部,进行下一次循环。具体代码如下:


package sunsoft.testideas;
public class Ex_Continue {
	void Loop_Continue(){
		int i=0;
		int sum=0;
		while(i<100){
			i++;
			if(i==10) continue;
			sum+=i;
		}
		T.O("加入了Continue的结果是:"+sum);
	}
}



这个程序在执行到i=10的时候,跳出了本次循环,于是没有对10进行累加,所以结果是5050-10=5040接下来,是break语句。这个语句可以在循环中退出循环一个简单的例子(根据上面的continue语句改编,将continue改成了break):


package sunsoft.testideas;
public class Ex_BreakLoop {
	void Loop_Break(){
		int i=0;
		int sum=0;
		while(i<100){
			i++;
			if(i==10) break;
			sum+=i;
		}
		T.O("加入了Break的结果是:"+sum);
	}
}






接着,一个想法打断了我,如果循环有嵌套,那么break在嵌套中会有什么表现呢?
首先,一个两层循环,我把条件控制的break语句放在内层循环中;
代码如下:


package sunsoft.testideas;
public class Ex_QTLoopBreak {
	void MultiLoop_Break(){
		int i=0,j=0;
		int sum=0;
		for(i=0;i<10;i++){
			for(j=0;j<10;j++){
				T.O("inner2 loop:i="+i+" , j="+j);
				if(j==6) break;
			}
			T.O("inner1 loop:i="+i+" , j="+j);
		}
		T.O("out loop:i="+i+" , j="+j);
		T.O("加入了Break的结果是:"+sum);
	}
}


输出的结果:inner2 loop:i=0 , j=0inner2 loop:i=0 , j=1inner2 loop:i=0 , j=2inner2 loop:i=0 , j=3inner2 loop:i=0 , j=4inner2 loop:i=0 , j=5inner2 loop:i=0 , j=6inner1 loop:i=0 , j=6inner2 loop:i=1 , j=0inner2 loop:i=1 , j=1inner2 loop:i=1 , j=2inner2 loop:i=1 , j=3inner2
 loop:i=1 , j=4inner2 loop:i=1 , j=5inner2 loop:i=1 , j=6inner1 loop:i=1 , j=6inner2 loop:i=2 , j=0inner2 loop:i=2 , j=1inner2 loop:i=2 , j=2inner2 loop:i=2 , j=3inner2 loop:i=2 , j=4inner2 loop:i=2 , j=5inner2 loop:i=2 , j=6inner1 loop:i=2 , j=6inner2 loop:i=3
 , j=0inner2 loop:i=3 , j=1inner2 loop:i=3 , j=2inner2 loop:i=3 , j=3inner2 loop:i=3 , j=4inner2 loop:i=3 , j=5inner2 loop:i=3 , j=6inner1 loop:i=3 , j=6inner2 loop:i=4 , j=0inner2 loop:i=4 , j=1inner2 loop:i=4 , j=2inner2 loop:i=4 , j=3inner2 loop:i=4 , j=4inner2
 loop:i=4 , j=5inner2 loop:i=4 , j=6inner1 loop:i=4 , j=6inner2 loop:i=5 , j=0inner2 loop:i=5 , j=1inner2 loop:i=5 , j=2inner2 loop:i=5 , j=3inner2 loop:i=5 , j=4inner2 loop:i=5 , j=5inner2 loop:i=5 , j=6inner1 loop:i=5 , j=6inner2 loop:i=6 , j=0inner2 loop:i=6
 , j=1inner2 loop:i=6 , j=2inner2 loop:i=6 , j=3inner2 loop:i=6 , j=4inner2 loop:i=6 , j=5inner2 loop:i=6 , j=6inner1 loop:i=6 , j=6inner2 loop:i=7 , j=0inner2 loop:i=7 , j=1inner2 loop:i=7 , j=2inner2 loop:i=7 , j=3inner2 loop:i=7 , j=4inner2 loop:i=7 , j=5inner2
 loop:i=7 , j=6inner1 loop:i=7 , j=6inner2 loop:i=8 , j=0inner2 loop:i=8 , j=1inner2 loop:i=8 , j=2inner2 loop:i=8 , j=3inner2 loop:i=8 , j=4inner2 loop:i=8 , j=5inner2 loop:i=8 , j=6inner1 loop:i=8 , j=6inner2 loop:i=9 , j=0inner2 loop:i=9 , j=1inner2 loop:i=9
 , j=2inner2 loop:i=9 , j=3inner2 loop:i=9 , j=4inner2 loop:i=9 , j=5inner2 loop:i=9 , j=6inner1 loop:i=9 , j=6out loop:i=10 , j=6加入了Break的结果是:0通过以上的数据可以知道,内层循环中的break会打断本层的循环(j 循环),但是不会打断外层的循环(i 循环)接下来尝试下,把break放在外层循环(i 循环中)。按照我的预期,应该就是直接退出外层循环,也就是干干净净的结束循环。测试结果是证明了我的猜想:(如下代码)

package sunsoft.testideas;
public class Ex_QTLoopBreak {
	void MultiLoop_Break(){
		int i=0,j=0;
		int sum=0;
		for(i=0;i<10;i++){
			for(j=0;j<10;j++){
				T.O("inner2 loop:i="+i+" , j="+j);
			}
			T.O("inner1 loop:i="+i+" , j="+j);
			if(i==3) break;
		}
		T.O("out loop:i="+i+" , j="+j);
		T.O("加入了Break的结果是:"+sum);
	}
}


输出结果是:inner2 loop:i=0 , j=0inner2 loop:i=0 , j=1inner2 loop:i=0 , j=2inner2 loop:i=0 , j=3inner2 loop:i=0 , j=4inner2 loop:i=0 , j=5inner2 loop:i=0 , j=6inner2 loop:i=0 , j=7inner2 loop:i=0 , j=8inner2 loop:i=0 , j=9inner1 loop:i=0 , j=10inner2 loop:i=1 , j=0inner2
 loop:i=1 , j=1inner2 loop:i=1 , j=2inner2 loop:i=1 , j=3inner2 loop:i=1 , j=4inner2 loop:i=1 , j=5inner2 loop:i=1 , j=6inner2 loop:i=1 , j=7inner2 loop:i=1 , j=8inner2 loop:i=1 , j=9inner1 loop:i=1 , j=10inner2 loop:i=2 , j=0inner2 loop:i=2 , j=1inner2 loop:i=2
 , j=2inner2 loop:i=2 , j=3inner2 loop:i=2 , j=4inner2 loop:i=2 , j=5inner2 loop:i=2 , j=6inner2 loop:i=2 , j=7inner2 loop:i=2 , j=8inner2 loop:i=2 , j=9inner1 loop:i=2 , j=10inner2 loop:i=3 , j=0inner2 loop:i=3 , j=1inner2 loop:i=3 , j=2inner2 loop:i=3 , j=3inner2
 loop:i=3 , j=4inner2 loop:i=3 , j=5inner2 loop:i=3 , j=6inner2 loop:i=3 , j=7inner2 loop:i=3 , j=8inner2 loop:i=3 , j=9inner1 loop:i=3 , j=10out loop:i=3 , j=10加入了Break的结果是:0可以明确的看到结果的区别。综合运用前面的东西,写一个菱形绘制的代码:

package sunsoft.testideas;

public class Ex_LinXing {
	void DrawLinXing(){
		int Lines;
		int Rows=6;
		for(Lines=-5;Lines<6;Lines++){
			DrawSpace(Math.abs(Lines));
			DrawSign(2*(Rows-Math.abs(Lines))-1);
			System.out.print('\n');
		}
	}
	void DrawSpace(int num){
		int k;
		for(k=0;k<num;k++){
			System.out.print(' ');
		}
	}
	void DrawSign(int num){
		int k;
		for(k=0;k<num;k++){
			System.out.print('&');
		}		
	}
}
绘制结果可以自己看。
【因为空格宽度的原因,无法显示图示】





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值