for循环
已知循环次数的循环!
for(初始值;退出循环的条件;循环后的操作){
循环执行语句;
}
实例1.
class Home151{
public static void main(String[] args){
for(int i=1;i<=6;i++){ //打印行数
for(int j=1;j<=i;j++){ //打印每一行的数字
System.out.print(j+" ");//打印完数字加一个空格
}
System.out.println(); //每行数字打印完换行
}
}
}
class Home152{
public static void main(String[] args){
for(int i=1;i<=6;i++){ //行数循环,一共6行
for(int j=1;j<=7-i;j++){ //每一行要打印的数字是7-行数个
System.out.print(j+" ");
}
System.out.println();//换行
}
}
}
class Home153{
public static void main(String[] args){
for(int i=1;i<=6;i++){//打印6行
for(int k=1;k<=6-i;k++){//打印数字前边的空格
System.out.print(" "); //每次打印两个空格,一个数字位,一个是数字之间的空格
}
for(int j=i;j>=1;j--){//打印数字
System.out.print(j+" ");
}
System.out.println();
}
}
}
class Home154{
public static void main(String[] args){
for(int i=1;i<=6;i++){ //打印行数
for(int j=1;j<=7-i;j++){ //打印每一行数字
System.out.print(j+" ");
}
System.out.println();
for(int k=0;k<=i-1;k++){ //从第二行开始数字前的空格!
System.out.print(" ");
}
}
}
}
经典例题:数字金字塔,具体实现见我的博客Java02✌!
小结:
打印数字金字塔,*金字塔等,优先考虑绝对值函数,如上图,其次就是找规律吧,思路要清晰,首先考虑一共要打印几行,再思考每一行要打印的东西满足什么样的规律,在开始循环输出就搞定啦!
while循环
未知循环次数。
初始化;
while(判断进入循环的条件语句){
循环需执行的语句;
}
巧妙运用while实现无限循环
初始化;
while(true){
执行语句;
}
实例2.
输入一个十进制数,将它转为十六进制数;
import java.util.*;class Home12{
public static void main(String[] args){
Scanner input=new Scanner(System.in); //1.提示用户输入一个十进制数;
System.out.print("Enter the number:");
int num=input.nextInt(); //2.定义一个空字符串存放转为十六进制的数
String str=""; //3.循环除16取余
while(true){
int rest=num%16;
rest=num%16;//123%16
if(rest<=9){
str=rest+str;//逆序拼接s=rest=s
}
else {
str=(char)(rest+55)+str;//大于9的数字转字符
}
num=num/16;
if(num==0){
break;
}
}
System.out.println("0X"+str);
}
}
小结:十进制转十六进制,除16取余倒叙排列,主要问题就是提前不清楚除多少次,所以用while循环,还有一个需要特别注意的就是10~15处理方法。A是65,10先转换为65需要+55,在转成字符A。
do-while循环
与while 循环相近,不过是先执行,再判断,而while循环是先判断再执行。
初始化;
do{
执行语句;
}while(判断语句)
总结:
当一条语句需要执行多次时,我们可以利用以上三种循环结构,while与for可以互换,区别在于for为了循环而定义的变量在for循环结束就在内存中释 放。而while循环使用的变量在循环结束后还可以继续使用 。
循环是道卡儿,还需多多练习,多多思考,最重要还是要脑子灵光,思路清晰,才能学好循环。加油呀!