while循环:
1. while结构和if很像
2. 循环要注意更新变量,防止死循环(无限循环)
3.循环的思路
while(循环条件){
循环操作 ;
}
会:可以识别循环条件、循环操作-->套语法
不会:不用循环,多写几步,观察循环条件、循环操作
例题:
2010上网人数8000万,假设每年按百分之三十增长,问那一年人数增长到三亿
public class Test5 {
public static void main(String[] args) {
int year = 2010;
int persons = 8000;
while (persons<30000){
year ++;
persons = (int)(persons*(1+0.3));
System.out.println(year+"--"+persons);
}
System.out.println(year);
}
}
计算100以内的偶数之和
public class Test5 {
public static void main(String[] args) {
int sum = 0;
int i = 1;
while (i<=100){
if(i % 2 == 0) {
sum = sum + i;
}
i++;
}
System.out.println(sum);
}
}
do…while循环:
public class Test5 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in );
String isContinue = "";
int money = 0;
do {
System.out.println("请选择:\n1.Tshirt(100) 2.夹克(200) 3.衬衫(300)");
int choice = input.nextInt();
if(choice == 1){
System.out.println("Tshirt\t"+100);
money = money + 100;
}else if(choice == 2){
System.out.println("夹克\t"+200);
money = money + 200;
}else if(choice == 3){
System.out.println("衬衫\t"+300);
money = money + 300;
}else{
System.out.println("输入有误!!!");
}
System.out.println("是否继续?y/n");
isContinue = input.next();
}while (isContinue.equals("y"));
System.out.println(money);
}
}
用循环实现 登录操作:若用户名、密码错误,则给出提示,并重新登陆
public class Test5 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String username = "";
String password = "";
do {
if (!(username.equals("") && password.equals(""))){
System.out.println("请重新登录");
}
System.out.println("请输入用户名:");
username = input.next();
System.out.println("请输入密码:");
password = input.next();
}while (!(username.equals("zs") && password.equals("abc")));
System.out.println("登录成功!");
}
}
for循环:while的变体
输出5门课程成绩,计算平均分
int sum = 0;
Scanner input = new Scanner(System.in);
for (int i = 1;i <= 5; i++){
System.out.println("请输入第"+ i + "门成绩:");
int score = input.nextInt();
sum = sum + score;
}
System.out.println("您的平均分为" + sum / 5.0);
求100以内能被7整除的数字之和
int sum = 0;
for (int i = 0;i <= 100; i++){
if (i%7 == 0)
sum = sum + i;
}
System.out.println(sum);
水仙花数是指一个三位数其各位数字的立方和等于该数本身
for(int i = 100; i <= 1000; i++){
int getWei = i % 10 ;
int shiWei = i / 10 % 10;
int baiWei = i / 100;
if(i == getWei * getWei * getWei + baiWei * baiWei * baiWei + shiWei * shiWei * shiWei){
System.out.println(i);
}
}
- while:先判断后执行
- do…while:先执行,后判断
- for:循环次数已知、始末条件已知
break 和 continue 区别
break:退出循环、终止循环
continue:跳过当前循环、继续下一次
break 和 continue 区别 示例
public class Test6 {
public static void main(String[] args) { for(int i = 0; i < 6; i++){ if (i == 2 ){ //break; continue; } System.out.println(i); } }
}
录入五门课程的成绩,并计算平均分。如果分数为负数,停止录入,并给出错误提示
import java.util.Scanner;
public class Test6 {
public static void main(String[] args) {
int sum = 0;
boolean flag = true; //true:5个成绩录入正常;false:录入失败!
Scanner input = new Scanner(System.in);
for (int i = 1; i <= 5;i++){
System.out.println("请输入第" + i +"门成绩:");
int score = input.nextInt();
if(score < 0){
System.out.println("输入有误!停止录入");
flag = false;
break;
}
sum += score;
}
if(flag == true){
System.out.println(sum);
System.out.println(sum / 5.0);
}
}
}
1–20,累加。累加到那个数字时,刚好大于30
int sum = 0;
for(int i = 1;i <=20;i++ ){
sum += i;
if(sum > 30){
System.out.println(i);
break;
}
}
用户登录验证(zs,abc),验证次数最多3次,循环登录操作,提示重新登录
Scanner input = new Scanner(System.in);
boolean flag = false;
String name = "";
String pwd = "";
for(int i = 0;i < 3;i++){
if (!(name.equals("") && pwd.equals(""))){
System.out.println("请重新登录:");
}
System.out.println("请输入用户名:");
name = input.next();
System.out.println("请输入密码:");
pwd = input.next();
if(name.equals("zs") && pwd.equals("abc")){
//System.out.println("登录成功!");
flag = true;
break;
}else{
System.out.println("登录失败!用户名或者密码有误!");
}
}
if(flag == true){
System.out.println("登录成功!");
}else{
System.out.println("连续输入错误三次!无法继续输入!");
}
带标签的Break和Continue
- 需要使用从内循环跳到外循环的情况可以使用带标签的Break和Continue
打印101~1510之间所有的质数
public class Test7 {
public static void main(String[] args) {
outer:for (int i = 101;i < 150; i++){
for (int j = 2; j < i / 2 ; j++){
if(i % j == 0){
continue outer;
}
}
System.out.println(i + " ");
}
}
}