接受用户输入数据
通过scanner对象来完成,数据的录入,Scanner类是Java提供的,供用户输入使用的类
使用步骤:
1.先导包,将系统提供的类包,导入到类中进行使用,在类名的上面导入
import java.util.Scanner;
2.创建Scanner对象,创建了对象之后,才能去使用,调用系统提供的方法
Scanner sc = new Scanner(System.in);
3.通过scanner对象,调用方法,获取需要的数据
int i = sc.nextInt(); 接收用户输入一个int类型的值,将这个值赋给i
import java.util.Scanner;
public class Demo020Scanner{
public static void main(String[] args){
//创建Scanner类的对象 sc
Scanner sc = new Scanner(System.in);
System.out.println("请你输入一个数值A");
//通过sc调用方法,接受用户的输入
int i = sc.nextInt();
System.out.println("请你输入一个数值B");
int j = sc.nextInt();
int max = i>j?i:j;
//将用户输入的值输出
System.out.println("输入的最大值是:"+max);
//练习 使用scanner 完成,录入用户输入的三个数字,并求出三个数字的最大值
Scanner s = new Scanner(System.in);
System.out.println("请你输入一个数值k1");
int k1=s.nextInt();
System.out.println("请你输入一个数值k2");
int k2=s.nextInt();
System.out.println("请你输入一个数值k3");
int k3=s.nextInt();
int max1=(k1>k2?k1:k2)>k3?(k1>k2?k1:k2):k3;
System.out.println("输入的最大值是:"+max1);
//使用使用scanner 完成,判断用户输入的数字是否为偶数
Scanner n = new Scanner(System.in);
System.out.println("请你输入一个数值n");
int n=s.nextInt();
System.out.println("输入的值是"+(n%2==0 ? "偶数":"奇数"));
}
}
流程控制语句
流程控制主要用来控制代码的执行的流程
默认情况下,代码都是从上到下,依次执行的
将来可以通过分支语句或者循环语句来控制代码语句的执行流程
1.顺序执行流程
2.分支语句
if
三种用法:
语法1:如果括号中表达式成立,则执行代码体内容
if(条件表达式){
代码体;
}
语法2:如果括号中表达式成立,则执行代码体1,不成立执行代码体2
if(条件表达式){
代码体;
}else{
代码体2;
}
语法3:如果条件1成立,则执行代码体1,条件2成立,执行代码体2,条件3成立,执行代码体3,都不成立执行代码体4
if(条件1){
代码体;
}else if(条件2){
代码体2;
}else if(条件3){
代码体3;
}else{
代码体4;
}
import java.util.Scanner;
public class DemoIf{
/*
让用户输入考试成绩,根据成绩判断能得到什么奖励
*/
public static void main(String[] args){
//创建Scanner类的对象 sc
Scanner sc = new Scanner(System.in);
/*
System.out.println("请你输入你的考试成绩");
int cmark = sc.nextInt();
//如果超过90,可以获得1000元奖励;80,200;其他没有
if(cmark>90){
System.out.println("奖励1000!");
}else if{
System.out.println("奖励200!");
}else{
System.out.println("没有奖励!");
}
*/
//if的嵌套使用
//录入学生的两门考试分数,语文和数学,如果语文低于90,没有奖励;
//如果语文超过90,数学>90,可以获得1000元奖励;数学>80,200;其他没有
System.out.println("请你输入你的语文成绩");
int cmark1 = sc.nextInt();
if(cmark1>90){
System.out.println("请你输入你的数学成绩");
int cmark2 = sc.nextInt();
if(cmark2>90){
System.out.println("奖励1000!");
}else if(cmark2>80){
System.out.println("奖励200!");
}else{
System.out.println("没有奖励!");
}
}else{
System.out.println("没有奖励!");
}
}
}
switch case 语句
也称为开关语句
根据某个表达式的值,在多个case引导的分支语句中,选择一个和表达式结果相同的值,来执行对应的这个case中的代码
语法:如果表达式值 = 值1,就执行代码1
表达式值 = 值2,就执行代码2
....
都不符合,就执行default中的代码n
switch(表达式值){
case 值1:
代码1;
break;
case 值2:
代码2;
break;
...
default:
代码n;
}
使用注意:
1.case后面只能跟常量,不能跟变量,而且值不能重复
2.switch的后面可以跟byte、short、char、int、String(字符串),不能跟long和浮点型
3.break可以省略,但是会发生case穿透现象,不建议省略
4.default是可选的语句,表示执行不满足条件的语句
import java.util.Scanner;
public class DemoSwitch{
public static void main(String[] args){
/*
让用户输入1-5,返回对应是星期几
*/
//创建Scanner类的对象 sc
Scanner sc = new Scanner(System.in);
System.out.println("输入1-5之间的数字");
int num = sc.nextInt();
//long num = sc.nextInt()Long;
//byte num = sc.nextInt()Byte;
switch(num){
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
case 3:
System.out.println("星期三");
break;
case 4:
System.out.println("星期四");
break;
case 5:
System.out.println("星期五");
break;
default:
System.out.println("输入值不在范围内");
}
}
}
循环语句
循环指的是,重复地去做某一件事情,在Java中表示重复的执行一段代码,
循环必须要有结束条件,不然这个循环就是一个死循环
将来如果有一些重复性的代码,都可以提取成循环的形式
while循环
语法: 如果表达式的结果为true,那么就执行代码体中的内容,所以这个表达式也作为结束循环的条件
将来在这个代码体中,需要将条件改变到结束循环的值
while(表达式条件){
执行代码体;
条件改变;
}
do while循环
do-while最少会执行一次代码
语法:
do{
代码;
条件改变;
}while(条件);
public class DemoWhile{
public static void main(String[] args){
/*System.out.println(1);
System.out.println(2);
System.out.println(3);
System.out.println(4);
System.out.println(5);
System.out.println(6);
System.out.println(7);
System.out.println(8);
System.out.println(9);
System.out.println(10);*/
//测试while循环的用法
//循环输出1-10
int i=1;
while(i<=10){
System.out.println(i);
i++;
}
//使用while循环求1-100的和
int j=1;
int sum=0;
while(j<=100){
//sum=sum+j;
sum+=j;
j++;
}
System.out.println("1-100的和:"+sum);
//用两种方法使用while求1-100偶数的和
//方法一
int m=2;
int sum1=0;
while(m<=100){
sum1+=m;
m+=2;//m每次循环都给自身加2
}
System.out.println("1-100的偶数和:"+sum1);
//方法二
int n=1;
int sum2=0;
while(n<=100){
//如果n是偶数才做累加
if(n%2==0){
sum2+=n;
}
n++;
}
System.out.println("1-100的偶数和:"+sum2);
System.out.println("---------------------------------------");
/*do-while的用法*/
//1-100的和
int x=1;
int sum3=0;
do{
sum3+=x;
x++;
}while(x<=100);
System.out.println("1-100的和:"+sum3);
//使用do-while求1-100奇数的和
int y=1;
int sum4=0;
do{
sum4+=y;
y+=2;
}while(y<=100);
System.out.println("1-100的奇数和:"+sum4);
int z=1;
int sum5=0;
do{
if(z%2==1){
sum5+=z;
}
z++;
}while(z<=100);
System.out.println("1-100的奇数和:"+sum5);
}
}
for循环
语法:
表达式1:一般都是循环变量的声明
表达式2:一般都是循环的条件以及结束的条件
表达式3:一般都是循环的条件变化
执行过程
1.先判断表达式2,如果表达式成立,则执行代码体内容
2.再执行表达式3
3.然后再判断表达式2是否成立,如果成立,则继续执行代码体
循环判断2、3步骤
直到循环结束
for(表达式;表达式2;表达式3){
代码体;
}
public class Demo01For{
public static void main(String[] args){
//使用for循环求1-100的和
int sum=0;
for(int i=1;i<=100;i++){
//sum=sum+j;
sum+=i;
}
System.out.println("1-100的和:"+sum);
//使用for求1-100偶数的和
int sum1=0;
for(int m=2;m<=100;m+=2){
sum1+=m;
}
System.out.println("1-100的偶数和:"+sum1);
//使用for循环求水仙花数
//水仙花数指的是三位数 100-999
//个位的三次方 + 十位的三次方+ 百位的三次方 = 数值本身
for(int k=100;k<=999;k++){
int k1 = k / 100;
int k2 = k / 10 % 10;
int k3 = k % 10;
if(k== k1*k1*k1 + k2*k2*k2 + k3*k3*k3){
System.out.println("水仙花数:"+k);//水仙花数:153,水仙花数:370,水仙花数:371,水仙花数:407
}
}
}
}
for循环的嵌套使用
一个循环中包含了另一个循环
for(表达式;表达式2;表达式3){
for(表达式;表达式2;表达式3){
代码体;
}
代码体;
}
public class Demo02For{
public static void main(String[] args){
/*
每次只能输出一个*
*****
*****
*****
*****
*/
/*
for(int i=1;i <= 5;i++){
System.out.println("*");
}
System.out.println(" ");
for(int i=1;i <= 5;i++){
System.out.println("*");
}
for(int i=1;i <= 5;i++){
System.out.println("*");
}
for(int i=1;i <= 5;i++){
System.out.println("*");
}
*/
/*
//外层的循环,一般用来控制行数
for(int j=1;j<=4;j++){
//里面的循环,一般用来控制列数
for(int i=1;i <= 5;i++){
System.out.print("*");
}
System.out.println(" ");
}
*/
/*
//乘法口诀表
for(int m=1;m<=9;m++){
for(int n=1;n<=m;n++){
System.out.print(m +"*"+ n +"="+ (m*n) + " ");
}
System.out.println();
}
*/
/*打印图形
*
***
*****
*******
*********
*/
for(int i=1;i<=5;i++){
for(int k=1;k<=5-i;k++){
System.out.print(" ");
}
for(int j=1;j<=(2*i-1);j++){
System.out.print("*");
}
System.out.println();
}
}
}
增强for循环
一般用来遍历数组、集合等有多个数值的对象
语法:
for(类型 变量名:集合){
}
跳转语句
break:主要用在循环中或switch语句中,离开这两个使用场景无意义
作用:跳出单层循环、多层循环,或者跳出case语句
continue:终止当前一次循环,继续下次循环
return:结束方法,执行后,方法就不继续往下运行了
public class DemoBreak{
public static void main(String[] args){
//测试break、continue、return的用法
for(int i=1;i<=10;i++){
if(i == 5){
//break; //跳出循环
continue; //跳出本次循环,继续下次循环
//return; //结束方法
}
System.out.println(i);
}
System.out.println("执行程序结束");
//使用continue,求1-100偶数和
int sum=0;
for(int k=1;k<=100;k++){
if(k%2==1){
continue;
}
sum += k;
}
System.out.println("1-100偶数和为"+sum);
//使用break跳出多层循环
//需要配合提示词一起使用
wc:for(int m=1;m<=5;m++){
nc:for(int n=1;n<=5;n++){
if(n==3){
//break; //默认跳出内层循环
break wc;
}
System.out.print(n);
}
System.out.println();
}
//编写一个程序,可以实现
//1.录入班级学生人数 sum1
//2.录入每个学生的成绩 cmark
//3.统计班级80分以上的学生比例 sum2 cmark>80 sum1/sum2
//
import java.util.Scanner;
public class Practice{
public static void main(String[] args){
//创建输入对象,准备后续内容的输入
Scanner sc = new Scanner(System.in);
System.out.println("请你输入班级人数");
//确定班级人数,通过输入对象输入
int num = sc.nextInt();
int score;
int count=0;
//根据人数做循环,循环的次数就是录入的人数
for(int i=1;i<=num;i++){
System.out.println("请你输入学生成绩");
score=sc.nextInt();
//循环录入分数的同时判断分数是否超过80,超过了就记录下来
if(score<80){
continue;
}
count++;
}
System.out.println("超过80分的学生数量"+count);
//记录的超过80分的数量/总数量
double rate = (double) count / num *100;
System.out.println("超过80分的学生比例"+ rate + "%");
}
}