do-while 循环
do{
循环体
}while(判断条件)
do-while循环 不管判断条件是否成立 都会先执行循环体一次
// String str = "";
//
// do {
// System.out.println("今天星期" + day);
//
// day++;
// //思考在那里接收这个输入字符串
// //多次接收用户的输入
// str = scanner.nextLine();
//
// } while (str.equals("上班") && day <=7);
//break在while循环中的作用
int number = 0;
while(number < 10){
if (number == 5) {
//break可以结束当前的循环
//注意:break后面不写代码
break;
}
System.out.println(number);
number++;
}
}
for循环
for(循环增量)
for(int i = 0; < 5; i++){
sout(“循环内”);
}
sout(“循环外”);
public static void main(String[] args) {
//打印十次你开心吗?
for (int i = 0; i < 10; i++) {
//注意:循环增量 只能跟for后面的大括号中使用
System.out.println("你开心吗?" + i);
}
//计算1到10的和(使用for)
int sum = 0;
for (int i = 1; i <= 10; i++) {
sum = sum + i;
}
System.out.println(sum);
// 使用for循环 1-100中
// 是7的倍数 的个数 打印个数
int number = 0;
for (int i = 1; i <= 100; i++) {
if (i % 7 == 0) {
number++;
}
}
System.out.println(number);
}
嵌套for循环
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
sout("内循环");
}
sout("内循环");
}
public static void main(String[] args) {
System.out.print("哈哈");
/*
* 利用for循环打印矩形
* ***
* ***
* ***
* ***
* ***
* 外循环控制 一共有几行
* 内循环控制 每一行有一个
*/
//外循环
for (int i = 0; i < 5; i++) {
// 内循环
for (int j = 0; j < 3; j++) {
System.out.print("*");
}
//换行
System.out.println();
}
/*
* *****
* ****
* ***
* **
* *
*尖向下的三角形修改
*内循环的 循环增量初始值
*/
for (int i = 0; i < 5; i++) {
for (int j = i ; j < 5; j++) {
System.out.print("*");
}
System.out.println();
}
/*
*
* *
* **
* ***
* ****
* *****
* 尖向上的三角形修改
* 内循环 判断条件的值
*/
for (int i = 0; i < 5; i++) {
//判断条件需要一个递增的量
for (int j = 0; j <= i ; j++) {
System.out.print("*");
}
System.out.println();
}
//打印99乘法表 /t(制表符)
// 1*1=1
// 1*2=2 2*2=4
// 1*3=3 2*3=6 3*3=9
// 1*4=4 2*4=8 3*4=12 4*4=16
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();
}
// -----*
// ----* *
// ---* * *
// --* * * *
// -* * * * *
for (int i = 0; i < 5; i++) {
for (int j = i; j < 5; j++) {
System.out.print("-");
}
//拼接*号的三角形
for (int k = 0; k <= i; k++) {
System.out.print("* ");
}
System.out.println();
}
for循环
- break 结束当前循环
- continue 结束本次循环 继续下次循环
public static void main(String[] args) {
// for (int i = 0; i < 10; i++) {
// if (i== 5) {
// break;
// }
// System.out.println(i);
// }
//
//打印[0, 100]中
//是7的倍数中的值最大那个数(两种方法)
// int max = 0;
// for (int i = 0; i < 100; i++) {
//
// if (i % 7 ==0) {
// max = i;
// }
// System.out.println(max);
// }
// //使用break
// for (int i = 100; i >= 0; i--) {
// if (i % 7 ==0 ) {
// System.out.println(i);
// break;
// }
// }
// 班级13个人 跟每个人打招呼(打印几号你好)
// 讨厌的人不打招呼
// 我分别讨厌 3号 5号 9号
// for (int i = 1; i <=13; i++) {
// //判断
// if (i == 3 || i == 5 || i == 9) {
// continue;
// }
// System.out.println(i + "号 你好");
//
//
// }
//双层循环中break 结束时本层循环
//双层循环中continue 没有影响外层循环
//结束本层的本次循环 继续下次循环
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
if (j == 5) {
break;
}
System.out.println(j);
}
System.out.println();
}
//补充:
//做题时 如何选用使用哪个循环
//如果有明确的循环停止条件 一般用while好写
//数组一般使用for循环好写
//一般使用死循环 都使用while
//如果不知道要循环多少次 用死循环来写
//然后用break来结束循环
//for循环的死循环
for(;;) {
System.out.println("哈哈");
}
}
随机数(系统提供的Math类)
伪随机
random()方法
取值范围[0,1) 0到1之间的小数(留头不留尾)
[0,10]整数随机
公式:
(最大值 - 最小值 + 1) + 最小值
public static void main(String[] args) {
/*
//double num = Math.random();
//System.out.println(num);
//打印[23,88]之间的随机数
int num =(int)(Math.random() * (88 - 23 + 1) + 23);
System.out.println(num);
}
*/
// 随机[15,200]的整数 10个 并找出最大值
/*
int max = 0;
for (int i = 0; i < 10; i++) {
int num = (int)(Math.random() * (200 - 15 + 1) + 15);
//判断最大值
if (max < num) {
max = num;
}
}
System.out.println("最大值" + max);
*/
// 猜数字
// 随机一个[0,100]的数
// 输入你猜的数
// 如果你猜的数比随机出来的大 就打印猜大了
// 反之 猜小了 猜中 打印猜中了 结束程序
System.out.println("请输入0-100中的数");
Scanner scanner = new Scanner(System.in);
int randomNum =(int)(Math.random()*101);
//循环判断是否猜中
while (true) {
//接收用户输入的数
String str = scanner.nextLine();
//转化成整数
int num = Integer.parseInt(str);
//判断大小 提示用户
if (randomNum > num) {
System.out.println("猜小了");
}else if (randomNum < num) {
System.out.println("猜大了");
}else{
System.out.println("猜中了");
//结束循环
break;
}
}
}
函数:封装了特定功能的代码块
- 函数好处 : 增加代码的重复使用率 提高效率
-
- 函数的写法:
- 参数列表(可以是多个 也可以没有)
- 关键字 返回值类型 函数名字(参数类型1 参数名1,参数类型2 参数名2,……..){
- 函数体(执行代码)
- return 返回值;(返回值和函数声明上返回值类型保持一致)
- }
- 函数可以没有返回值
- 这时 函数声明上的返回值类型 使用void类型
-
- 函数名使用 小驼峰写法
- 关键字 照抄 public static
-
- 书写位置:
- 1.在类中写
- 2.函数中 不能定义函数
-
- 编写函数步骤
- 1.明确函数的参数
- 2.明确函数的返回值
-
- 3.函数的重载:当函数的功能相同,但是代码实现不同
- 可以使用相同的函数名 来声明
- 注意:
- 函数的重载 只跟 参数有关
- (数量 类型 顺序有关) 跟参数名 返回值类型 无关
//打印3行8列的矩形函数
//通过增加参数 来扩展该函数的功能
//打印N行M列的矩形
public static void printRect(int n,int m) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
System.out.print("*");
}
System.out.println();
}
}
//写计算两个整数的和的函数
public static int sum(int a , int b) {
return a + b;
}
//函数能不能定义同名函数?
public static void main(String[] args) {
//调用打印矩形函数
//直接使用 函数名(传入的参数);调用
//printRect();
//printRect(10, 2);
int num1 = sum(10, 15);
System.out.println(num1);
System.out.println("请输入0-100的之间的数");
Scanner scanner = new Scanner(System.in);
// 随机数
int randomNum = (int)(Math.random() * (100 - 0 + 1) + 0);
System.out.println(randomNum);
// 循环判断是否猜中
while (true) {
// 接收用户输入的数
String str = scanner.nextLine();
// 转化成整数
int num = Integer.parseInt(str);
// 判断大小 提示用户
if (randomNum > num) {
System.out.println("猜小了");
} else if (randomNum < num) {
System.out.println("猜大了");
} else {
System.out.println("猜中了");
// 结束循环
break;
}
}
需求: 定义函数
========
1.计算2个数的最大值
2.计算3个数的最大值
3.计算4个数的最大值
public static int max(int a, int b) {
return(a > b) ? a : b;
}
public static int max(int a,int b,int c) {
//直接调用2数的最大值方法
int num = max(a, b);
return (num > c) ? num : c;
}
public static int max(int a,int b,int c,int d) {
int num = max(a, b, c);
return(num > d) ? num : d;
}
递归函数:
- 在本函数中调用一个 和自己函数名相同的函数
//计算 4! 阶乘
public static int fun(int n) {
//注意递归函数必须要提供函数的出口 否则会成为死循环
if (n == 1) {
//直接结束递归
return 1;
}
return n * fun(n - 1);
}
public static void main(String[] args) {
int num = fun(4);
System.out.println(num);
//获取字符串当中的字符
String str = "wanglong";
//根据角标获取字符(角标是从0开始)
char c = str.charAt(1);
System.out.println(c);
}