循环语句
循环语句就是在满足一定条件下反复执行某一种操作。在Java中提供了3中常用的循环语句,分别是 while循环语句、do....while循环语句、for循环语句。
while循环语句
它也称之为判断语句,它的循环方式为利用一个条件来控制是否继续反复来执行这个语句。
语法:
while(条件表达式){
执行语句;
}//当条件表达式为true的时间,执行{}里面的执行语句,当执行完{}里面的语句后,重新来判断条件表达式的返回值,直到返回值为false的时间,退出循环。
/**
- 求1~1000相加之和
*/
public class afterAll{
}public static void main(String[] args) { int mywhile =0; int mysum =0;//记录相加之和 while (mywhile<=1000){ mysum = mywhile+mysum; mywhile++; } System.out.println(mysum); }
do……while循环语句
首先do while循环语句与while循环语句类似,它们之间的区别就是while语句先判断条件是否成立,再执行循环体,而do while循环语句则先执行一次循环后,再进行判断条件是否成立。通俗点就是do while循环语句中的{}程序段至少执行一次。
语法:
do {
执行语句
}while(条件表达式);
/**
- 一段代码看while语句和do while 语句的区别。
*/
public class afterAll{
}public static void main(String[] args) { int myone =200; while(myone==60){ System.out.println("\"我是闪电小王子!\""); myone--; }//由此可见呢,while并没有被执行,因为条件表达式返回值为false; System.out.println(myone);//此时myone还是等于初始变量200 int mytwo=200; do { System.out.println("\"我是青蛙小王子!\""); mytwo--; }while(mytwo==60);//此时的do while语句被执行,但是呢因为while表达式返回值为false,但是还是被执行发了一次。 System.out.println(mytwo);//此时mytwo结果为199; }
总结: while 语句,先判断在执行; do...while 语句是先执行一次,再进行判断,如果表达式返回值为false,再循环结束。
使用do……While循环实现用户注册输入密码操作
/**
* 6.使用do……while循环实现用户注册两次输入密码场景,如果输入错误,则重新输入,直到密码设置成功
*/
Scanner sc = new Scanner(System.in);
String password,passwordConfrim;
do {
System.out.println("请输入密码:");
password = sc.nextLine();
System.out.println("请确认密码:");
passwordConfrim = sc.nextLine();
if(!passwordConfrim .equals(password)) {
System.out.println("两次密码不一致!请重新输入!");
}
}while(!passwordConfrim.equals(password));
System.out.println("密码设置成功!您的最终密码为:\n"+passwordConfrim);
for循环语句
for 循环是Java程序设计中最有用的循环语句之一,一个for循环可以用来重复执行某条语句,知道某个条件得到满足。再Java5以后新增了 foreach 语法。
语法: for(初始化表达式1;布尔表达式2;赋值表达式3){
语句序列;
}//表达式1:初始化表达式,负责完成变量的初始化;
//表达式2:循环条件表达式,返回值为boolean型表达式,指定循环条件;
//表达式3:循环后操作表达式,负责修整变量,改变循环条件。(在完成一次循环之后才执行)
/**
- 用for循环来计算2-100之间所有偶数之和
*/
public class afterAll{
}public static void main(String[] args) { int mysum =0;//声明一个变量用于记录相加之和 for (int myone=2;myone<=100;myone+=2){//初始化变量判断条件 偶数加二永远为偶数 mysum=mysum+myone;//计算结果 } System.out.println("0~100所有偶数的和为:"+mysum); }
for循环和while循环的区别:
在实际开发中,在明确循环次数的情况下使用for循环,在不明确循环次数的时间使用while循环。
foreach循环语句
foreach循环通常用于遍历数组或集合中的元素。
//语法
for (类型 变量名 : 数组名) {
// 循环体
}
其中,类型 是数组或集合中元素的数据类型,变量名 是循环变量的名称,数组名 是需要遍历的数组或集合的名称。循环体是需要重复执行的代码。
遍历整型数组的方法:
int[] nums = {1, 2, 3, 4, 5};
for (int num : nums) {
System.out.println(num);
}
for循环嵌套循环加强版(Enhanced version)练习
1.打印正序倒序9*9乘法表格
/**
* 7.打印9*9乘法表格
*/
System.out.println("正序乘法表格");
for(int i=1;i<=9;i++) {
for(int k=1;k<=i;k++) {
int j =k*i;
System.out.print(k+"*"+i+"="+j+"\t");
}
System.out.println();
}
System.out.println("倒序乘法表格");
LLp:for(int i=9;i<=9;i--) {
if(i<=0) {
break LLp;
}
for(int j=1;j<=i;j++) {
int k=j*i;
System.out.print(j+"*"+i+"="+k+"\t");
}
System.out.println();
}
2.打印等腰三角形
/**
* 8.打印等腰三角形
*/
for(int i=1;i<=6;i++) {
for(int j=1;j<=6-i;j++) {
System.out.print(" ");
}
for(int k=1;k<=2*i-1;k++) {
System.out.print("*");
}
System.out.println();
}
3.打印菱形
/**
* 9.打印菱形
*/
//菱形上半部分打印
for(int i=1;i<=6;i++) {
for(int j=1;j<=6-i;j++) {
System.out.print(" ");
}
for(int k=1;k<=2*i-1;k++) {
System.out.print("*");
}
System.out.println();
}
//菱形下半部分打印
for(int i=1;i<=5;i++) {
for(int j=1;j<=i;j++) {
System.out.print(" ");
}
for(int k =1;k<=10-(2*i-1);k++){
System.out.print("*");
}
System.out.println();
}
4.根据用户输入的三角形行数打印出等腰三角形。
package ymy.circulation.test;
import java.util.Scanner;
/**
@author 程序员yangxiaoyuan
*/
public class Text {
public static void main(String[] agrs) {//实现用户输入等腰三角形行数实现等腰三角形的打印 System.out.println("请输入要打印的等腰三角形的行数:"); Scanner sc = new Scanner(System.in); int line = sc.nextInt(); //开始打印 for(int i = 1; i <= line ; i++) { for(int j = 1; j <= line-i; j++) { System.out.print(" "); } for(int k = 1;k<=2*i-1;k++) { System.out.print("*"); } System.out.println(); }
}
}- 根据输入的菱形行数打印菱形。
package ymy.circulation.test;
import java.util.Scanner;
/**
@author 程序员yangxiaoyuan
*/
public class Text {
public static void main(String[] agrs) {//实现用户输入等腰三角形行数实现等腰三角形的打印 System.out.println("请输入要打印菱形的行数:"); Scanner sc = new Scanner(System.in); int line = sc.nextInt(); //上半部分 for(int i = 1; i <= line ; i++) { for(int j = 1; j <= line-i; j++) { System.out.print(" "); } for(int k = 1;k<=2*i-1;k++) { System.out.print("*"); } System.out.println(); } //下半部分 for(int i = 1; i <= line-1; i++) { for(int j = 1; j <= i ; j++ ) { System.out.print(" "); } for(int k = 1; k <= (line+line-1)-2*i ;k++ ) { System.out.print("*"); } System.out.println(); }
}
}
6.使用for循环嵌套实现爱心的打印
/**
- @author 程序员yangxiaoyuan
- 这是一个测试类,用于单个程序进行测试。
*/
public class Test {
public static void main(String[] args) {
int size = 6; // 调整此变量以改变爱心的大小
// 打印上半部分
for (int i = size / 2; i <= size; i += 2) {
for (int j = 1; j < size - i; j += 2) {
System.out.print(" ");
}
for (int j = 1; j <= i; j++) {
System.out.print("*");
}
for (int j = 1; j <= size - i; j++) {
System.out.print(" ");
}
for (int j = 1; j <= i; j++) {
System.out.print("*");
}
System.out.println();
}
// 打印下半部分
for (int i = size; i >= 1; i--) {
for (int j = i; j < size; j++) {
System.out.print(" ");
}
for (int j = 1; j <= (i * 2) - 1; j++) {
System.out.print("*");
}
System.out.println();
}
//for循环实现爱心的打印(此爱心非同平常)
for(float y = (float) 1.5;y>-1.5;y -=0.1) {
for(float x= (float) -1.5;x<1.5;x+= 0.05){
float a = x*x+y*y-1;
if((a*a*a-x*x*y*y*y)<=0.0) {
System.out.print("^");
}
else
System.out.print(" ");
}
System.out.println();
}
}
}
7.打印6+1菱形
/*
@author 程序员yangxiaoyuan
*/
public class DifficultProblems {public static void main(String[] args) {
// TODO Auto-generated method stub
print ( 6 ) ; // 打印 6+1 行的菱形
}
public static void print ( int size ) {
if ( size % 2 == 0 ) {
size ++; // 计算菱形大小
}
// 打印菱形上半部分
for ( int i = 0 ; i < size / 2 + 1 ; i ++ ) {
for ( int j = size / 2 + 1 ; j > i + 1 ; j -- ) {
System . out . print ( " " ) ; // 输出左上角位置的空白
}
for ( int j = 0 ; j < 2 * i + 1 ; j ++ ) {
System . out . print ( " * " ) ; // 输出菱形上半部边缘
}
System . out . println ( ) ; // 换行
}
// 打印菱形下半部分
for ( int i = size / 2 + 1 ; i < size ; i ++ ) {
for ( int j = 0 ; j < i - size / 2 ; j ++ ) {
System . out . print ( " " ) ; // 输出菱形左下角空白
}
for ( int j = 0 ; j < 2 * size - 1 - 2 * i ; j ++ ) {
System . out . print ( " * " ) ; // 输出菱形下半部边缘
}
System . out . println ( ) ; // 换行
}
}
}
8.百千买百鸡(允翁一,值钱五;鸡母一,值线三;鸡雏三,值钱一.百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?”意思是说,一只公鸡五文钱,一只母鸡三文钱,三只小鸡一文钱,要用一百文钱刚好买一百只鸡,问公鸡、母鸡和小鸡各买多少只?)
/**
* 10.百钱买百鸡
*/
//方法1
for(int cock=0;cock<=20;cock++) {
for(int hen=0;hen<=33;hen++) {
int chilk=100-cock-hen;
if(chilk%3==0 && chilk/3+hen*3+cock*5==100) {
System.out.print("公鸡:"+cock+"只 "+"母鸡:"+hen+"只 "+"小鸡:"+chilk+"只"+"\t");
}
}
System.out.println();
}
//方法2
for(int cock=0;cock<=20;cock++) {
for(int hen=0;hen<=33;hen++) {
for(int chilk=3;chilk<=99;chilk+=3) {
if(hen+cock+chilk==100 && hen*3 + cock*5 + chilk/3 == 100) {
System.out.println("公鸡:"+cock+"只 "+"母鸡:"+hen+"只 "+"小鸡:"+chilk+"只"+"\t");
}
}
}
}
9.分享给大家一个数字逆位处理的方法(今天以5位数为例)
int number;
Scanner scxx = new Scanner(System.in);
do {
System.out.println("请输入您要逆序处理的数字:");
number= scxx.nextInt();
int myriad1=number/10000;//取万位
int thousand1=number%10000/1000;//取千位
int hundreds1=number%1000/100;//取百位
int ten1=number%100/10;//取十位
int unit1=number%10;//取个位数
if(number<=0) {
System.out.println("请你仔细看清要求再进行输入数字逆序处理!");
}else {
String dd =unit1+""+ten1+""+hundreds1+""+thousand1+""+myriad1;
System.out.println("您输入的五位数的数字值为:"+number);
System.out.println("现在进行逆位处理之后的结果为:"+dd);
}
}while(number<=0);
10.计算1+1/2+1/3+……+1/n(提示用户输入一个正整数,然后对结果进行累加)
/
编程实现用户输入整数,计算1+ 1/2 + 1/3 + 1/4 +....+1/n /
import java.util.Scanner;
public class ForNumber{
public static void main(String args[]){
int SysNumber;
Double Sum=0.0;
Scanner scanner = new Scanner(System.in);
System.out.printf("请输入一个正整数:");
SysNumber = scanner .nextInt();
if(SysNumber<=0){
System.out.printf("请仔细读题要求");
}else{
for(int i=1;i<=SysNumber;i++){
Sum+=1.0/i;
}
System.out.println("Sum的最终结果为:"+Sum);
}
}
}
好了,到了这里循环控制已经练习的差不多了,因为循环控制很重要,所以呢,还是建议初学的小伙伴们要加强练习,也欢迎大家留言,本次Java基础专栏会持续更新,正在整合手头的资料,后面像计算机底层到Java进阶,常用技术,从0到精通会持续分享给大家,供大家参考!如果对你们的学习有一定的帮助,或者有什么意见建议,欢迎留言!谢谢大家!