Java学习之流程控制
用户交互scanner
Scanner类来获取用户的输入
1.基本语法:
Scanner s=new Scanner(System.in);//创建一个Scanner对象,用于接收键盘数据
01 先用scanner.hasNext()判断用户是否输入字符串,如Hello
再用scnaner.next 接收字符串,输出接收的数据为:Hello
package com.KuangStudy.Scanner;
import java.util.Scanner;//自动导入
public class Demo01 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("使用next方式接收数据:");
//用hasnext()判断用户是否输入字符串
if (scanner.hasNext()){
//使用next接收
String str=scanner.next();
System.out.println("输出内容为"+str);
}
//IO流的类要及时关闭,否则会持续占用资源,IO流指输入输出流
scanner.close();
}
}
02 先用scanner.hasNextLine()判断用户是否输入字符串,如Hello World
再用scnaner.nextLine 接收字符串,输出接收的字符串为:Hello World
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);
}
//IO流的类要及时关闭,否则会持续占用资源,IO流指输入输出流
scanner.close();
}
03 注意
a.Scanner对象:next()不能得到带有空格的字符串
nextLine()以enter为结束符,即nextLine方法返回的是输 入回车之前的所有字符
b.IO流的类要及时关闭,否则会持续占用资源,IO流指输入输出流
scanner.close();
04 简洁写法
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();
}
2.Scanner接收数字
nextInt(); nextFloat(); ...
public static void main(String[] args) {
//new一个scanner对象,接收键盘输入数据
Scanner scanner = new Scanner(System.in);
float f=0.0f;
int i=0;
System.out.println("请输入一个整数:");
if (scanner.hasNextInt()) {//判断用户是否输入整数
i=scanner.nextInt();//接收输入数据
System.out.println("您输入的整数是:"+i);
} else {
System.out.println("您输入的不是整数");
}
System.out.println("请输入一个小数:");
if (scanner.hasNextFloat()) {//判断用户是否输入小数,此处输入1,得到1.0;输入2,得到2.0 ...else后的内容暂时无法实现
f=scanner.nextFloat();//接收输入数据
System.out.println("您输入的小数是:"+f);
} else {
System.out.println("您输入的不是小数");
}
scanner.close();
}
3.题:我们可以输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,通过输入非数字来结束输入,并输出结果
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
double i=0.0;
int m=0;
double sum=0.0;
System.out.println("请输入:");
//通过循环判断是否还有输入,使用while可以输入多个数字
while (scanner.hasNextDouble()){
//获取接收的数据应新定义一个对象来装
i = scanner.nextDouble();
m=m+1;//m++
sum=sum+i;
System.out.println("第"+m+"个数"+"当前sum="+sum);
}
System.out.println(m+"个数的sum="+sum);
scanner.close();
}
顺序结构
Java最基本的结构,除非特别指明,否则按顺序一步一步执行
If选择结构
01单选择结构
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入:");
String s=scanner.nextLine();
//if单选择结构,判断s ?= Hello
//if(bool表达式){结果为true}
if (s.equals("Hello")){
System.out.println(s);
}
System.out.println("End");
}
02双选择结构
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
float score=scanner.nextFloat();
if(score>=60){
System.out.println("及格");
}
else {
System.out.println("不及格");
}
}
03多选择结构
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入分数:");
float score=scanner.nextFloat();
if (score>=90 && score<=100){
System.out.println("A");
}else if(score>=80 && score<90){
System.out.println("B");
}else if(score>=70 && score<80){
System.out.println("c");
}else if(score>=60 && score<70){
System.out.println("D");
}else if(score>=0 && score<60){
System.out.println("E");
}else
{
System.out.println("输入成绩不合法");
}
}
04嵌套结构
if(bool表达式1){
//如果bool表达式1为true,则执行代码
if(bool表达式2){
// 如果bool表达式2为true,则执行代码
}
}
Switch选择结构
格式:
switch(expression){
case value:
//语句
break;
case value:
//语句
break;
default:
//语句
}
01语句中的变量类型可以是byte、short、int或char
public static void main(String[] args) {
char grade='A';
//注意switch(这里加的内容)
switch (grade){
case 'A':
System.out.println('A');
break;
case 'B':
System.out.println('B');
break;
case 'C':
System.out.println('C');
break;
case 'D':
System.out.println('D');
break;
case 'E':
System.out.println('E');
break;
}
}
02语句中的变量类型可以是String
public static void main(String[] args) {
String name="S";
switch (name){
case "Xiuga":
System.out.println(name);
break;
case "Sugar":
System.out.println("Sugar");
break;
default:
System.out.println("有没有搞错");
}
}
03反编译 java---class(字节码文件)---反编译
File--Project Structure--找到class文件所在目录

在IDEA相应目录下右键--open in--打开对应class文件即可查看源码
While循环
格式:
while(bool表达式){
循环内容
}
01死循环,会造成程序卡死崩溃,少数情况需要循环一直执行
while(true){//死循环,或bool表达式即循环条件一直为true
}
02 1+2+3+...+100=?
public static void main(String[] args) {
int i=0;
int sum=0;
while (i<=100){
sum=sum+i;
i++;
}
System.out.println("1+2+...+100="+sum);
//输出1 2 ...100
/*while (i<100){
i++;
System.out.println(i);
}*/
}
Dowhile循环
格式:
do{
//循环语句
}while(bool表达式);
01DoWhile计算1+...+100=
public static void main(String[] args) {
int i=0;
int sum=0;
do {
sum=sum+i;
i++;
}while (i<=100);
System.out.println(sum);
}
02DoWhile While的区别
-
whlie先判断后执行,do...while先执行后判断
-
do...while总是保证循环体至少会被执行一次
public static void main(String[] args) {
int a=0;
while (a<0) {
a++;
System.out.println(a);//无值输出
}
System.out.println("================");
do {
a++;
System.out.println(a);//a==1
}while (a<0);
}//证明了while和do...while的区别
虽然所有循环结构都可以用while或do...while表示,但是for循环使一些循环结构变得更简单
格式:
for(初始化;bool表达式;更新){
//代码语句
}
01while循环与for循环的比较
public static void main(String[] args) {
int a=0;//初始化
while (a<100){//bool表达式
a++;//迭代
System.out.println(a);
}
System.out.println("while循环结束");
//初始化;bool表达式;迭代
for(int i=1;i<=100;i++){
System.out.println(i);
}
System.out.println("for循环结束");
}
//死循环
for(;;;){
}
02计算0-100之间奇数和偶数的和
public static void main(String[] args) {
//计算0-100之间奇数和偶数的和
int oddsum=0;//存放奇数和
int evensum=0;//存放偶数和
for(int i=0;i<=100;i++){
if(i%2==0){//i为偶数时
oddsum +=i;
}else {//i为奇数时
evensum +=i;
}
}
System.out.println("奇数的和:"+oddsum);
System.out.println("偶数的和:"+evensum);
}
03用while或for循环输出1-1000之间能被5整除的数,并且每行输出3个
public static void main(String[] args) {
//用while循环输出1-1000之间能被5整除的数,并且每行输出3个
int i=0;
while (i<=1000){
if (i%5==0){
System.out.print(i+"\t");
}
if(i%(5*3)==0){
System.out.println();
}
i++;
}
}
public static void main(String[] args) {
//用for循环输出1-1000之间能被5整除的数,并且每行输出3个
for (int i = 0; i <= 1000; i++) {
if(i%5==0){
System.out.print(i+"\t");
}
if (i%(5*3)==0){
//System.out.println();
System.out.print("\n");
}
// System.out.println();输出换行
//System.out.print();输出不换行
}
}
04打印九九乘法表
public static void main(String[] args) {
/*思路:
1.先打印第一列
2.再把1用for循环包起来
3.去掉重复项 i<=j
4.调整样式
* */
for (int j = 1; j <= 9; j++) {
for (int i = 1; i <= j; i++) {
System.out.print(j+"*"+i+"="+j*i+"\t");
}
System.out.println();
}
}
05增强for循环---主要用于数组或集合
格式:
for(声明语句:表达式){
//代码语句
}
for循环遍历数组与增强for循环遍历数组
public static void main(String[] args) {
int[] num={10,20,30,40,50};//定义一个数组
for (int i=0;i<5;i++){
System.out.println(num[i]);//取num数组中的第i个数
}
System.out.println("=============");
//遍历数组的元素,把num数组的元素赋值给x
for(int x:num){
System.out.println(x);
}
}
break &continue
01break 用于终止任何循环语句的主体部分,跳出循环
public static void main(String[] args) {
int i=0;
while (i<100){
i++;
System.out.println(i);
if (i==30){
break;
}
}
}
02continue用于终止某次循环过程,跳过循环体中尚未执行的语句,接着进行下一次循环
public static void main(String[] args) {
int i=0;
while (i<100){
i++;
if (i%10==0){
System.out.println();
continue;
}
System.out.print(i);
}
}
03打印三角形
package com.KuangStudy.struct;
public class TestDemo {
/*
@author xiuga
@version 1.8
@since 2021-02-07 22:41
*/
public static void main(String[] args) {
//打印一个5行的三角形
for (int i = 1; i <= 5; i++) {
for (int j = 5; j >= i; j--) {
System.out.print(" ");
}
for (int j = 1; j <= i; j++) {
System.out.print("*");
}
for (int j = 1; j < i; j++) {//注意此处j<i,没有=
System.out.print("*");
}
System.out.println();
}
}
}

浙公网安备 33010602011771号