我在B站上大学😄
学习至:狂神说Java
1. 用户交互Scanner
基础语法:
Scanner scanner = new Scanner(System.in);
String a = scannr.next();
scanner.close();
通过Scanner类的next()与nextLine()方法获取输入的字符串;
在读取前我们一般需要使用hasNext()或hasNextLine()判断是否还有输入的数据。
next()与nextLine()区别
next() 在读取到第一个有效字符(前边的空格自动去掉)后,遇到空白就会停止读取,此处空白包括空格和回车
nextLine() 回车才是结束符,可以读取回车前的所有字符,包括空格
eg1:
public class Demo01 {
public static void main(String[] args){
//创建一个扫描对象,用于接收键盘数据
Scanner scanner = new Scanner(System.in);
System.out.println("使用next方式接收:");
//判断用户有没有输入字符串
if(scanner.hasNext()){
//使用next接收
String str = scanner.next();
System.out.println("输出内容为:"+str);
}
//凡是属于IO流的类如果不关闭会一直占用资源,用完记得关掉
scanner.close();
}
}
使用next方式接收:
hello world
输出内容为:hello
进程已结束,退出代码0
eg2:
public class Demo02 {
public static void main(String[] args){
//从键盘接收数据
Scanner scanner = new Scanner(System.in);
System.out.println("使用nextline方式接收:");
//判断是否还有输入
if (scanner.hasNextLine()){
String str = scanner.nextLine();
System.out.println("输出的内容为:"+str);
}
scanner.close();
}
}
使用nextline方式接收:
hello world
输出的内容为:hello world
进程已结束,退出代码0
eg3:
public class Demo03 {
public static void main(String[] args){
//从键盘接收数据
Scanner scanner = new Scanner(System.in);
System.out.println("请输入数据:");
String str = scanner.nextLine();
System.out.println("输出的内容为:"+str);
scanner.close();
}
}
请输入数据:
Hello World!
输出的内容为:Hello World!
进程已结束,退出代码0
eg4:
public class Demo04 {
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
//从键盘接收数据
int i=0;
float f=0.0f;
System.out.println("请输入整数:");
if (scanner.hasNextInt()){
i = scanner.nextInt();
System.out.println("整数数据:"+i);
}
else{
System.out.println("数据不是整数");
}
System.out.println("请输入小数:");
if (scanner.hasNextFloat()){
f = scanner.nextFloat();
System.out.println("小数数据:"+f);
}
else{
System.out.println("数据不是小数");
}
scanner.close();
}
}
请输入整数:
12
整数数据:12
请输入小数:
1.3
小数数据:1.3
进程已结束,退出代码0
请输入整数:
1.2
数据不是整数
请输入小数:
小数数据:1.2
进程已结束,退出代码0
eg5:
public class Demo05 {
public static void main(String[] args){
System.out.println("请输入任意个数,用空格或回车区分,非数字结束输入,输出为和与均值");
//输入多个数字,并求助其总和和均值,每输入一个数用回车确认,通过输入非数字结束输入,并输出执行结果
Scanner scanner = new Scanner(System.in);
//和
double sum = 0;
//计算输入了多少个数
int m = 0;
//通过循环判断是否还有输入,并在里边进行累次求和
while (scanner.hasNextDouble()){
double x = scanner.nextDouble();
sum = sum + x;
m++;
}
System.out.println(m + "个数的和为:"+ sum);
System.out.println(m+ "个数的均值为:"+(sum/m));
scanner.close();
}
}
请输入任意个数,用空格或回车区分,非数字结束输入,输出为和与均值
1 2 3 5 7 9 34 56 78
87 流
10个数的和为:282.0
10个数的均值为:28.2
进程已结束,退出代码0
注:
Scanner对象不是只能接收字符串数据,也能接收整型,浮点型,布尔型等其他基本数值类型数据,对 应的方法有,nextInt()、nextByte()、nextLong()、nextBoolean()等,对应的判断同样在 前面加has就行(注意命名规范)
2. if 条件语句
if单选择结构
语法:
if(布尔表达式){
布尔表达式为True时执行的语句;
}
eg:
public class IfDemo1 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入内容:");
String s = scanner.nextLine();
//equals: 判断字符串是否相等
if (s.equals("Hello")){
System.out.println(s);
}
System.out.println("End");
scanner.close();
}
}
请输入内容:
cvjkc
End
进程已结束,退出代码0
if双选择结构
语法:
if(布尔表达式){
布尔表达式为True时执行的语句;
}else{
布尔表达式为Flase时执行的语句;
}
eg:
public class IfDemo02 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入成绩: ");
double score = scanner.nextDouble();
if(score >= 60){
System.out.println("恭喜您! 及格");
}
else{
System.out.println("很遗憾, 您没有及格, 望再接再厉!");
}
scanner.close();
}
}
请输入成绩:
89
恭喜您! 及格
进程已结束,退出代码0
if多选择结构
语法:
if(布尔表达式1){
布尔表达式1为True时执行的语句;
}else if(布尔表达式2){
布尔表达式2为True时执行的语句;
}else if(布尔表达式3){
布尔表达式3为True时执行的语句;
.......
}else{
以上布尔表达式都不为True执行的语句;
}
eg:
public class IfDemo03 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入成绩: ");
double score = scanner.nextDouble();
if(score >= 90 && score <= 100){
System.out.println("恭喜! 您的成绩为优秀");
}
else if (score >= 80 && score <90){
System.out.println("恭喜! 您的成绩为良好");
}
else if (score >= 70 && score < 80) {
System.out.println("您的成绩为中等");
}
else if (score >= 60 && score <70) {
System.out.println("您的成绩为及格");
}
else if (score >= 0 && score < 60){
System.out.println("很遗憾, 您没有及格, 望再接再厉!");
}
else {
System.out.println("成绩应在0~100分之间");
}
scanner.close();
}
}
请输入成绩:
102
成绩应在0~100分之间
进程已结束,退出代码0
嵌套的if选择结构
语法:
if(布尔表达式1){
布尔表达式1为True时执行的语句;
if(布尔表达式2){
布尔表达式1为True时执行的语句;
}
}
else {
布尔表达式1为Flase时执行的语句;
}
eg:
import java.util.Random;
/**
* 随机生成一个0~100的整数,再判断生成的数是多少
*
* @version 1.00
* @autor liunian
* @date 2023.7.12
*/
public class IfDemo04 {
public static void main(String[] args) {
// 创建 Random 对象
Random random = new Random();
// 生成随机数
int r = random.nextInt(101); // 生成范围在 0 到 100 之间的随机整数
//判断这个100以内的随机整数具体是几
if (r<=50){
if (r<=25) {
if (r <= 13) {
if (r <= 6) {
if (r <= 3) {
switch (r) {
case 0:
System.out.println("判断生成的随机数为:0");
break;
case 1:
System.out.println("判断生成的随机数为:1");
break;
case 2:
System.out.println("判断生成的随机数为:2");
break;
default:
System.out.println("判断生成的随机数为:3");
}//0~3
}
else {
switch (r) {
case 4:
System.out.println("判断生成的随机数为:4");
break;
case 5:
System.out.println("判断生成的随机数为:5");
break;
default:
System.out.println("判断生成的随机数为:6");
}//4~6
}
}
else {
if (r > 9) {
switch (r) {
case 10:
System.out.println("判断生成的随机数为:10");
break;
case 11:
System.out.println("判断生成的随机数为:11");
break;
case 12:
System.out.println("判断生成的随机数为:12");
break;
default:
System.out.println("判断生成的随机数为:13");
}//9~13
}
else {
switch (r) {
case 7:
System.out.println("判断生成的随机数为:7");
break;
case 8:
System.out.println("判断生成的随机数为:8");
break;
default:
System.out.println("判断生成的随机数为:9");
}//7~9
}
}
}
else {
if (r >= 20) {
switch (r) {
case 20:
System.out.println("判断生成的随机数为:20");
break;
case 21:
System.out.println("判断生成的随机数为:21");
break;
case 22:
System.out.println("判断生成的随机数为:22");
break;
case 23:
System.out.println("判断生成的随机数为:23");
break;
case 24:
System.out.println("判断生成的随机数为:24");
break;
default:
System.out.println("判断生成的随机数为:25");
}
}//20~25
else {
switch (r) {
case 14:
System.out.println("判断生成的随机数为:14");
break;
case 15:
System.out.println("判断生成的随机数为:15");
break;
case 16:
System.out.println("判断生成的随机数为:16");
break;
case 17:
System.out.println("判断生成的随机数为:17");
break;
case 18:
System.out.println("判断生成的随机数为:18");
break;
default:
System.out.println("判断生成的随机数为:19");
}
}//14~19
}
}
else/*26~50*/{
if (r<=38)/*26~38*/{
if (r<=31){
switch(r) {
case 26:
System.out.println("判断生成的随机数为:26");
break;
case 27:
System.out.println("判断生成的随机数为:27");
break;
case 28:
System.out.println("判断生成的随机数为:28");
break;
case 29:
System.out.println("判断生成的随机数为:29");
break;
case 30:
System.out.println("判断生成的随机数为:30");
break;
default:
System.out.println("判断生成的随机数为:31");
}//26~31
}
else{
switch(r) {
case 32:
System.out.println("判断生成的随机数为:32");
break;
case 33:
System.out.println("判断生成的随机数为:33");
break;
case 34:
System.out.println("判断生成的随机数为:34");
break;
case 35:
System.out.println("判断生成的随机数为:35");
break;
case 36:
System.out.println("判断生成的随机数为:36");
break;
case 37:
System.out.println("判断生成的随机数为:37");
break;
default:
System.out.println("判断生成的随机数为:38");
}//32~38
}
}
else/*39~50*/{
if (r<=44) {
switch (r) {
case 39:
System.out.println("判断生成的随机数为:39");
break;
case 40:
System.out.println("判断生成的随机数为:40");
break;
case 41:
System.out.println("判断生成的随机数为:41");
break;
case 42:
System.out.println("判断生成的随机数为:42");
break;
case 43:
System.out.println("判断生成的随机数为:43");
break;
default:
System.out.println("判断生成的随机数为:44");
}//39~44
}
else{
switch(r) {
case 45:
System.out.println("判断生成的随机数为:45");
break;
case 46:
System.out.println("判断生成的随机数为:46");
break;
case 47:
System.out.println("判断生成的随机数为:47");
break;
case 48:
System.out.println("判断生成的随机数为:48");
break;
case 49:
System.out.println("判断生成的随机数为:49");
break;
default:
System.out.println("判断生成的随机数为:50");
}//45~50
}
}
}
}
else{
if (r<=76) {
if (r <= 64) {
if (r <= 57) {
if (r <= 54) {
switch (r) {
case 51:
System.out.println("判断生成的随机数为:51");
break;
case 52:
System.out.println("判断生成的随机数为:52");
break;
case 53:
System.out.println("判断生成的随机数为:53");
break;
default:
System.out.println("判断生成的随机数为:54");
}//51~54
}
else {
switch (r) {
case 55:
System.out.println("判断生成的随机数为:55");
break;
case 56:
System.out.println("判断生成的随机数为:56");
break;
default:
System.out.println("判断生成的随机数为:57");
}//55~57
}
}
else {
if (r <=61) {
switch (r) {
case 58:
System.out.println("判断生成的随机数为:58");
break;
case 59:
System.out.println("判断生成的随机数为:59");
break;
case 60:
System.out.println("判断生成的随机数为:60");
break;
default:
System.out.println("判断生成的随机数为:61");
}//58~61
}
else {
switch (r) {
case 62:
System.out.println("判断生成的随机数为:62");
break;
case 63:
System.out.println("判断生成的随机数为:63");
break;
default:
System.out.println("判断生成的随机数为:64");
}//62~64
}
}
}
else {
if (r <=70) {
switch (r) {
case 65:
System.out.println("判断生成的随机数为:65");
break;
case 66:
System.out.println("判断生成的随机数为:66");
break;
case 67:
System.out.println("判断生成的随机数为:67");
break;
case 68:
System.out.println("判断生成的随机数为:68");
break;
case 69:
System.out.println("判断生成的随机数为:69");
break;
default:
System.out.println("判断生成的随机数为:70");
}
}//65~70
else {
switch (r) {
case 71:
System.out.println("判断生成的随机数为:71");
break;
case 72:
System.out.println("判断生成的随机数为:72");
break;
case 73:
System.out.println("判断生成的随机数为:73");
break;
case 74:
System.out.println("判断生成的随机数为:74");
break;
case 75:
System.out.println("判断生成的随机数为:75");
break;
default:
System.out.println("判断生成的随机数为:76");
}
}//71~76
}
}
else/*76~100*/{
if (r<=89)/*26~38*/{
if (r<=82){
switch(r) {
case 77:
System.out.println("判断生成的随机数为:77");
break;
case 78:
System.out.println("判断生成的随机数为:78");
break;
case 79:
System.out.println("判断生成的随机数为:79");
break;
case 80:
System.out.println("判断生成的随机数为:80");
break;
case 81:
System.out.println("判断生成的随机数为:81");
break;
default:
System.out.println("判断生成的随机数为:82");
}//77~82
}
else{
switch(r) {
case 83:
System.out.println("判断生成的随机数为:83");
break;
case 84:
System.out.println("判断生成的随机数为:84");
break;
case 85:
System.out.println("判断生成的随机数为:85");
break;
case 86:
System.out.println("判断生成的随机数为:86");
break;
case 87:
System.out.println("判断生成的随机数为:87");
break;
case 88:
System.out.println("判断生成的随机数为:88");
break;
default:
System.out.println("判断生成的随机数为:89");
}//83~89
}
}
else/*90~100*/{
if (r<=95) {
switch (r) {
case 90:
System.out.println("判断生成的随机数为:90");
break;
case 91:
System.out.println("判断生成的随机数为:91");
break;
case 92:
System.out.println("判断生成的随机数为:92");
break;
case 93:
System.out.println("判断生成的随机数为:93");
break;
case 94:
System.out.println("判断生成的随机数为:94");
break;
default:
System.out.println("判断生成的随机数为:95");
}//90~95
}
else{
switch(r) {
case 96:
System.out.println("判断生成的随机数为:96");
break;
case 97:
System.out.println("判断生成的随机数为:97");
break;
case 98:
System.out.println("判断生成的随机数为:98");
break;
case 99:
System.out.println("判断生成的随机数为:99");
break;
default:
System.out.println("判断生成的随机数为:100");
}//96~100
}
}
}
}
System.out.println("实际生成的随机数为: " + r);
}
}
判断生成的随机数为:20
实际生成的随机数为: 20
进程已结束,退出代码0
3. switch选择结构
语法:
switch(变量){
case value1:
语句1;
// break; //可选
case value2:
语句2;
// break; //可选
...
default: //可选
语句n;
}
eg: 见if嵌套的例题
注意:不写break会有case穿透现象,某value x满足条件,如果该语句中没有break,则不仅会执行语 句x,下方的语句x+1等也会执行,直至出现break跳出或执行到结尾为止。