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(“nn– 1”);
int r = f (2);
System. out .println(r);
System. out .println(“nn– 3”);
System. out .println( f (4));
System. out .println(“nn– 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.length; i++) {
a[i]
}
数组
项目:day0407_数组
类:day0407.Test1
package day0407;
import java.util.Arrays;
public class Test1 {
public static void main(String[] args) {
System. out .println(“nn————–“);
f1 ();
System. out .println(“nn————–“);
f2 ();
System. out .println(“nn————–“);
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<a.length; i++) {
System. out .println(a[i]);
}
System. out .println(“nn—————-“);
//把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.length; i++) {
a[i] = i+1;
}
//返回数组,把数组返回到调用位置
//本质是把数组地址返回去
return a;
}
}