----------- android培训、java培训、期待与您交流! ------------
/* 黑马程序员_毕向东_Java基础视频教程——
0301-语句(while).avi这种结构类似于for(int i = 0; i < 10; i++){statements},但是要注意的是,在循环体中i的使用上不同,while是1~10,for是0~9。
当然,如果把i++放到循环体语句结尾,就跟for一样了。
for(initialzation; boolean-expression; step){
statementfor循环的循环控制变量是局部变量,循环结束后自动释放。而while循环则需要提前定义。这也是二者使用上的一个区分点:
当循环控制变量仅仅起到控制作用、用完就是累赘的时候,用for。当用完后还有其他作用的时候,用while。
//这个程序用于测试一些简单的循环应用
public class ForTest{
public static void main(String[] args){
/* //用for循环计算1~10的整数的和
int j = 0;
for(int i = 1; i <= 10; j += i++);
System.out.println("1到10的和为" + j);
*/
/* //用while循环计算1~10的整数的和
int i = 0,j = 0;
while(j < 10){
i += ++j;
}
System.out.println("1到10的和为" + i);
*/
/*
//1~100之间7的倍数有多少个?
int sum = 1;
while(sum * 7 <= 100){
sum++;
}
System.out.println("1~100之间7的倍数有" + (sum - 1) +"个");
*/
/*
//打印正直角三角
for(int i = 1; i <=5; i++){
for(int j = 1; j <= i; j++){
System.out.print("*");
}
System.out.println();
}
*/
/*
//打印倒三角三角
for(int i = 1; i <=5; i++){
for(int j = i; j <= 5; j++){
System.out.print("*");
}
System.out.println();
}
*/
/* //打印正等腰三角
for(int i = 0; i < 4; i++){
for(int j = -4; j <= 4; j++){
System.out.print(Math.abs(j) <= i ? '*' : ' ');
}
System.out.println();
}
*/
/* //打印实心菱形
for(int i = -4; i <= 4; i++){
for(int j = -4; j <= 4; j++){
System.out.print(Math.abs(j) + Math.abs(i) <= 4 ? '*' : ' ');
}
System.out.println();
}
*/
/* //打印空心菱形
for(int i = -4; i <= 4; i++){
for(int j = -4; j <= 4; j++){
System.out.print(Math.abs(j) + Math.abs(i) == 4 ? '*' : ' ');
}
System.out.println();
}
*/
/* //一层循环一条print打印空心菱形
for(int i = -4,j = -4; i <= 4; j++){
System.out.print(Math.abs(i) + j == 5 && (j = -5) != i++ ? "\n" : Math.abs(j) + Math.abs(i) == 4 ? '*' : ' ');
}
*/
/* //打印九九乘法表
for(int i = 1; i <= 9; i++){
for(int j = 1; j <= i; j++){
System.out.print(j + "*" + i + "=" + i * j + "\t");
}
System.out.println();
}
*/
//一层循环一条print打印九九乘法表
for(int i = 1, j = 1; j <= 9; i++){
System.out.print(i + "*" + j + "=" + i * j + (i == j && (i = 0) != j++ ? "\n" : "\t"));
}
}
}
//很久之前写的一个打印大型组合菱形图的代码,贴吧一个兄弟出的题目。
//因为题目追求的是用得语句尽量少,所以代码可读性差些,运行效率也不高。
//思路是将复杂问题分解处理,拆成多层循环,把整体图形拆解为几个大块,大块拆小块,将各部分模块化
//为了让print语句尽量少,通过条件表达式来判断是输出" "还是"*"
//还是基于多层迭代的,没有体现出递归思想
//没有把\n的一句合并到" "、"*"判别中
//没有简化循环嵌套数量,怕简化后让代码变得更加恶心难懂,现在已经够恶心的了
/* OutPut:
*
***
*****
***
*
* * *
*** *** ***
***************
*** *** ***
* * *
* * * * *
*** *** *** *** ***
*************************
*** *** *** *** ***
* * * * *
* * *
*** *** ***
***************
*** *** ***
* * *
*
***
*****
***
*
* * *
*** *** ***
***** ***** *****
*** *** ***
* * *
* * * * * * * * *
*** *** *** *** *** *** *** *** ***
*************** *************** ***************
*** *** *** *** *** *** *** *** ***
* * * * * * * * *
* * * * * * * * * * * * * * *
*** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
***************************************************************************
*** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
* * * * * * * * * * * * * * *
* * * * * * * * *
*** *** *** *** *** *** *** *** ***
*************** *************** ***************
*** *** *** *** *** *** *** *** ***
* * * * * * * * *
* * *
*** *** ***
***** ***** *****
*** *** ***
* * *
*
***
*****
***
*
* * *
*** *** ***
***************
*** *** ***
* * *
* * * * *
*** *** *** *** ***
*************************
*** *** *** *** ***
* * * * *
* * *
*** *** ***
***************
*** *** ***
* * *
*
***
*****
***
*
*/
public class Shape {
/* : 用于整理思路的,这个输出的是小菱形模块
public static void printSmallShape(boolean isDiamond){
for(int x = -2; x <= 2; x++){
for(int y = -2; y <= 2; y++){
System.out.print(isDiamond ? Math.abs(x) + Math.abs(y) > 2 ? " " : "*" : " ");
}
System.out.println();
}
}
*/
/* : 用来整理思路的,这个输出的是中菱形模块
public static void printMiddleShape(){
for(int a = -2; a <= 2; a++){
for(int x = -2; x <= 2; x++){
for(int b = -2; b <= 2; b++){
for(int y = -2; y <= 2; y++){
System.out.print((Math.abs(a) + Math.abs(b) > 2) ? " " : ((Math.abs(x) + Math.abs(y) > 2) ? " " : "*"));
}
}
System.out.println();
}
}
}
*/
//最终代码,用来输出最终的组合菱形
public static void printBigShape(){
for(int m = -1; m <= 1; m++){
for(int a = -2; a <= 2; a++){
for(int x = -2; x <= 2; x++){
for(int n = -1; n <=1; n++){
for(int b = -2; b <= 2; b++){
for(int y = -2; y <= 2; y++){
System.out.print((Math.abs(m) + Math.abs(n) > 1) ? " " : (Math.abs(a) + Math.abs(b) > 2) ? " " : ((Math.abs(x) + Math.abs(y) > 2) ? " " : "*"));
}
}
}
System.out.println();
}
}
}
}
//将测试模块设置成了静态内部类,将测试部分和主代码分离开来,使用java Shape$ShapeTest来进行测试
public static class ShapeTest{
public static void main(String[] args){
printBigShape();
}
}
}
//一个用于输出可变大小的正倒直角三角、心形的练习程序,本来想实现输出可变大小的心型来着,琢磨半天没实现=。=
//心形想画得好看,规律太难找了,懒得搞了=。=写得很二,分块输出,就当练手了
/*Output:
****** ******
********** **********
************* *************
*****************************
*****************************
*****************************
***************************
***********************
*******************
***************
***********
*******
***
*
*/
public class PrintHeart{
/*
//输出可变大小的正直角三角
public static void printTriangle(int height, int indent, char aChar){
for(int i = 0; i < height; i++){
for(int j = 0; j < (1 + indent * i); j++){
System.out.print(aChar);
}
System.out.println();
}
}
*/
/* //输出可变大小的倒直角三角
public static void printTurnTriangle(int width, int height, int indent, char aChar){
for(int i = 0; i < height; i++){
for(int j = 0; j < (width - indent * j); j++){
System.out.print(aChar);
}
System.out.println();
}
}
*/
//输出心形
public static void printHeart(){
//输出上面的两个MM
for(int i = 0; i < 3; i++){
printBlank(5 - i * 2);
if(i == 0){
printStar(7 - 1);
printBlank(5 + 2);
printStar(7 - 1);
}else{
printStar(7 + i * 3);
printBlank(5 - i * 2);
printStar(7 + i * 3);
}
System.out.println();
}
//输出中间矩形
for(int i = 0; i < 3; i++){
printStar(29);
System.out.println();
}
//输出下部倒三角
for(int i = 0; i < 8; i++){
if(i == 7){
printBlank(i * 2);
printStar(1);
}else{
printBlank(1 + i * 2);
printStar(27 - i * 4);
}
System.out.println();
}
}
//输出连续n个星号
private static void printStar(int n){
for(int i = 0; i < n; i++){
System.out.print("*");
}
}
//输出连续n个空格
private static void printBlank(int n){
for(int i = 0; i < n; i++){
System.out.print(" ");
}
}
//测试单元,分离成静态内部类
public static class PrintHeartTest{
public static void main(String[] args){
printHeart();
}
}
}
//测试标签与break、coninue的使用
public class LabelTest{
public static void main(String[] args){
int i = 0;
outer:
for(;;){
System.out.println("outer : i = " + i);
inner:
for(;;i++){
System.out.println("inner : i = " + i);
if(i == 3){
System.out.println("continue inner");
continue inner; //等于continue
}
if(i == 5){
System.out.println("continue outer");
i++; //continue outer会直接跳到外侧,跳过自增过程
continue outer;
}
if(i == 8){
System.out.println("break inner");
i++;
break inner; //等于break,也会跳过递增
}
if(i == 10){
System.out.println("break outer");
break outer; //结束循环
}
}
}
}
}/* Output:
outer : i = 0
inner : i = 0
inner : i = 1
inner : i = 2
inner : i = 3
continue inner
inner : i = 4
inner : i = 5
continue outer
outer : i = 6
inner : i = 6
inner : i = 7
inner : i = 8
break inner
outer : i = 9
inner : i = 9
inner : i = 10
break outer
*///:~
----------- android培训、java培训、期待与您交流! ------------