![8a9cbb8e285ed7279bd0ad8e5971b40f.png](https://i-blog.csdnimg.cn/blog_migrate/c3ba384393a0e2a14e72db3cb1e18b32.jpeg)
for和while
for和while都可以互相代替
固定的循环次数、数据规律变化,用for
猜数字
已经产生了一个[1, 1001)范围的随机整数
请猜这个数是几
285
猜:1
小
猜:999
大
猜:2
小
猜:285
对
项目:day0405_猜数字
类:day0405.Test1
package day0405;
import java.util.Random;
import java.util.Scanner;
public class Test1 {
public static void main(String[] args) {
//产生随机整数
// 1+ [0, 1000) --> [1, 1001)
// 1+ {0,1,2,3,4,5...999}
int r = 1+ new Random().nextInt(1000);
System.out.println(r);
System.out.println(
"已经产生了一个[1, 1001)范围的随机整数");
System.out.println("请猜这个数是几");
while(true) {
System.out.print("猜:");
int c = new Scanner(System.in).nextInt();
if(c > r) {
System.out.println("大");
} else if(c < r) {
System.out.println("小");
} else {
System.out.println("对");
break;
}
}
}
}
方法的返回值
一个方法,可以有计算结果
在调用位置,可以获得方法的计算结果返回值
void
空,没有返回值
有返回值,需要定义返回值的数据类型
int f() {
}
String f() {
}
如果定义了返回类型,必须返回值
int f() {
int x = 1;
if(x == 1) {
return 6;
}
return -1;
}
方法返回值
项目:day0406_方法返回值
类:day0406.Test1
package day0406;
public class Test1 {
public static void main(String[] args) {
System.out.println("-- 1");
int r = f(2);
System.out.println(r);
System.out.println("-- 3");
System.out.println(f(4));
System.out.println("-- 5");
System.out.println(4 + f(6));
}
private static int f(int i) {
return i*i;
}
}
定义一个方法,从email地址中,提取名字部分
sdfsdf@sdsdf.com
Test2
package day0406;
import java.util.Scanner;
public class Test2 {
public static void main(String[] args) {
System.out.println("输入email:");
String e = new Scanner(System.in).nextLine();
//email地址e,传递到该方法,
//并得到方法返回的名字,保存到变量n
String n = getName(e);
System.out.println(n);
}
static String getName(String email) {
/*
* "sdfwerw@rewerwe.com"
* |
* index
*
* 1. 定位 "@" 的下标位置 index
* 2. 截取 [0, index),直接返回
*
* email.indexOf("@")
* 查找指定子串的位置
* 找不到,得到特殊值 -1
* email.substring(0, index)
* 截取 [0, index)
*/
//找@的位置
int index = email.indexOf("@");
if(index == -1) {//找不到
return "格式错误";
}
//截取,直接返回截取的结果
return email.substring(0, index);
}
}
数组
用来存放一组数据的数据结构
数组创建(3种语法)
int[] a = new int[5];
新建5个长度的 int[] 数组
5个位置,存默认值 0
把数组的地址,存到变量a
int[] a = {5,2,6,7,1,2,3};
为存在的数组变量,重新赋一个新的数组,并且,直接初始化数组数据
a = new int[]{4,6,1};
数组的长度属性
a.length
数组一旦创建,长度不可变
数组长度,可以是0
最大下标是 a.length - 1
数组的遍历
从头到尾,依次访问每一个位置
for(int i=0; i
a[i]
}
数组
项目:day0407_数组
类:day0407.Test1
package day0407;
import java.util.Arrays;
public class Test1 {
public static void main(String[] args) {
System.out.println("--------------");
f1();
System.out.println("--------------");
f2();
System.out.println("--------------");
f3();
}
private static void f1() {
//新建 int[],长度5
//再把它的内存地址,存到变量a
int[] a = new int[5];
System.out.println(a[2]);
a[2] = 6;
//打印数组的全部数据
//Arrays.toString(a)
//把数组所有数据,连接成字符串
// "[0, 0, 6, 0, 0]"
System.out.println(Arrays.toString(a));
}
private static void f2() {
char[] a = {'a', 'b', 'c'};
System.out.println(Arrays.toString(a));
a = new char[]{'h','e','l','l','o'};
System.out.println(Arrays.toString(a));
}
private static void f3() {
int[] a = {6, 7, 8, 9, 10};
// 交换 1 和 3 位置的值
int t = a[1];
a[1] = a[3];
a[3] = t;
System.out.println(Arrays.toString(a));
}
}
Test2
package day0407;
import java.util.Arrays;
import java.util.Random;
public class Test2 {
public static void main(String[] args) {
//调用f()方法,从方法获取一个int[]数组
int[] a = f();
//遍历打印数组数据
for(int i=0; i
System.out.println(a[i]);
}
System.out.println("----------------");
//把a数组,传递到 shuffle() 方法打乱顺序
shuffle(a);
System.out.println(Arrays.toString(a));
}
private static void shuffle(int[] a) {
/*
* j
* [4, 2, 3, 1, 5]
* i
*
* *) i循环遍历数组
* *) 随机定位下标j与i交换
*/
for (int i = 0; i < a.length; i++) {
//随机下标j,范围:[0, a.length)
int j = new Random().nextInt(a.length);
int t = a[i];
a[i] = a[j];
a[j] = t;
}
}
private static int[] f() {
//新建int[]数组,长度5
//再把它的内存地址存到变量 a
int[] a = new int[5];
//遍历访问5个位置,填入1,2,3,4,5
for(int i=0; i
a[i] = i+1;
}
//返回数组,把数组返回到调用位置
//本质是把数组地址返回去
return a;
}
}