Java中提供了3中循环结构
while循环
do...while循环
for循环
do{}while(); : do..while至少执行一次
public class DoWhileDemo1 {
public static void main(String[] args) {
// int i = 10;
// while(){}
// while(i < 5) {
// System.out.println("hello1");
// i++;
// }
// do{}while(); : do..while至少执行一次
// int j = 10;
// do {
// System.out.println("hello2");
// j++;
// }while(j < 5);
// for(循环变量初始化;循环条件;循环变量步长)
// 1.循环变量初始化
// 2.判断是否满足循环条件
// 3.执行循环体
// 4.循环变量增加或减少
// 5.在回到第二步,如此往复
for(int i = 0;i < 5;i++) {
System.out.println("hello");
}
}
}
break和continue的使用
public class Demo4 {
public static void main(String[] args) {
// break的使用
while(true) {
Scanner scan = new Scanner(System.in);
System.out.println("请输入选项:");
System.out.println("1-------登录");
System.out.println("2-------注册");
System.out.println("3-----退出程序");
int option = scan.nextInt();
if(option < 0 || option > 3) {
System.out.println("无效选项");
}else {
if(option == 1) {
System.out.println("登录成功");
}else if(option == 2) {
System.out.println("注册成功");
}else {
System.out.println("退出成功");
break;
}
}
}
System.out.println("欢迎下次再来!!!!");
}
}
public class HomeWork_OP5 {
public static void main(String[] args) {
// 输出0-9之间的数,但是不包括5
int i = 0;
// while(i < 10) {
// if(i != 5) {
// System.out.print(i);
// }
// i++;
// }
while(i < 10) {
if(i == 5) {
i++;
// 跳过本次循环
continue;
}
System.out.print(i);
i++;
}
}
}
额外知识点
Debug调试
public class DebugDemo {
public static void main(String[] args) {
// 双击加断点,右键-->Debug as-->F6
int num = 100;
if(num < 50) {
num++;
}
System.out.println(num);
}
}
Scanner的使用问题
public class ScannerProblemDemo {
public static void main(String[] args) {
// 特殊情况:第一次获取的是数字,第二次获取是字符串
Scanner scan = new Scanner(System.in);
System.out.println("请输入一个数字1");
int num1 = scan.nextInt();
System.out.println("请输入一个字符串2");
scan.nextLine();
String str2 = scan.nextLine();
System.out.println(num1+","+str2);
/*
* 在控制台输入的所有数据都会进入内存
* int num1 = scan.nextInt();
* num1会将内存中的数据取走,但内存中还保留了一个enter
* String str2 = scan.nextLine();str2直接就把上次留下的enter取走了
* 所以没有给我们输入字符串的机会
* 解决方式:先用scan.nextLine();把上次留下的enter取走
*/
}
}
随机数
public class RandomDemo {
public static void main(String[] args) {
// 产生随机数
double num1 = Math.random();//[0,1)
// Scanner scan = new Scanner(System.in);
// 随机数类
Random random = new Random();
// random.nextDouble() [0,1)的小数
// random.nextInt(n) [0,n)的整数
double num2 = random.nextDouble();
System.out.println(num2);
}
}
循环嵌套
三角形和99乘法表
public class Demo2 {
public static void main(String[] args) {
// 用*画一个三角形
/*
*
**
***
****
*****
1x1=1
1x2=2 2x2=4
1x3=3 2x3=6 3x3=9
.....
*/
// 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 <= 9;i++) {
for(int j = 1;j <= i;j++) {
System.out.print(j+"x"+i+"="+i*j+" ");
}
// 换行
System.out.println();
}
}
}
public class Demo4 {
public static void main(String[] args) {
// 输出2-100之间的所有质数
// 质数:只能被1和本身整除 2 3 5 7 11 13 17 19 23...
for(int i = 2;i < 101;i++) {
boolean b = true;
// 判断是否是质数
for(int j = 2;j < i;j++) {
// 判断是否能整出
if(i%j == 0) {
// 一旦整除,b=false,表示整除过
b = false;
break;
}
}
// 根据b是true还是false,我们就知道内层循环是如何结束
// 1.true --> 自然结束
// 2.false --> false
if(b) {
System.out.println(i);
}
}
}
}
练习题
public class Practice3 {
public static void main(String[] args) {
// 求s=a+aa+aaa+aaaa+….+aa...a的值,
// 其中a是一个数字。例如2+22+222+2222,
// a的值和加数个数n均从控制台获取
Scanner scan = new Scanner(System.in);
System.out.println("请输入n");
int n = scan.nextInt();
System.out.println("请输入a");
int a = scan.nextInt();
int temp = a;
int sum = 0;
for(int i = 0;i < n;i++) {
sum = sum + a;
a = a * 10 + temp;
}
System.out.println(sum);
}
}
public class Practice3 {
public static void main(String[] args) {
// 求s=a+aa+aaa+aaaa+….+aa...a的值,
// 其中a是一个数字。例如2+22+222+2222,
// a的值和加数个数n均从控制台获取
Scanner scan = new Scanner(System.in);
System.out.println("请输入n");
int n = scan.nextInt();
System.out.println("请输入a");
int a = scan.nextInt();
int temp = a;
int sum = 0;
for(int i = 0;i < n;i++) {
sum = sum + a;
a = a * 10 + temp;
}
System.out.println(sum);
}
}
public class Practice5 {
public static void main(String[] args) {
// 一球从100米高度自由落下,每次落地后反跳回原高度的一半;
// 再落下,求它在第10次落地时,共经过多少米?第10次反弹多高
double height = 100;
double rt = 50;
for(int i = 2;i <= 10;i++) {
height = height + rt * 2;
rt = rt/2;
}
System.out.println(height);
System.out.println(rt);
}
}