Java流程控制
1. Scanner对象
Java提供java.util.Scanner工具类,可以通过Scanner类来获取用户的输入
基本语法:
Scanner str = new Scanner(System.in);
通过Scanner类的next()于nextLine()方法获取输入的字符串,在读取时用nhasNext()与hasNextLine()判断是否有输入的数据
public class Demo2 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("使用next方法接收:");
String str = scanner.nextLine(); //nextLine()在按下回车键时结束输入
System.out.println("输出内容为:"+str);
}
}
package com.bin.scanner;
import java.util.Scanner;
public class Demo4 {
public static void main(String[] args) {
//输入多个数字,求总和和平均数,每输入数字用回车确认,通过输入非数字来结束输入并输出执行结果
Scanner scanner = new Scanner(System.in);
//和
double sum = 0;
//计算输入了多少个数字
int m = 0;
//通过循环判断是否还有输入,并在里面对每一次进行求和和统计
while (scanner.hasNextDouble()){
double x = scanner.nextDouble();
m = m + 1;
sum = sum + x;
System.out.println("你输入了第"+m+"个数,总和sum = "+sum);
}
System.out.println("输入的"+m+"个数的和是:"+sum);
System.out.println("输入的"+m+"个数的平均值是:"+(sum/m));
}
}
2.if选择结构
public class IfDemo3 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入成绩:");
int score = scanner.nextInt();
if (score == 100){
System.out.println("恭喜满分");
}else if (score < 100 && score >=90){
System.out.println("成绩为A");
}else if (score < 90 && score >=80){
System.out.println("成绩为B");
}else if (score < 80 && score >=70){
System.out.println("成绩为C");
}else if (score < 70 && score >=60){
System.out.println("成绩为D");
}else if (score < 60 && score >=0){
System.out.println("成绩为E");
}else{
System.out.println("成绩不合法");
}
scanner.close();
}
}
3.Switch选择结构
public class SwitchDemo1 {
public static void main(String[] args) {
//字符本身还是数字
//反编译 java-class(字节码文件)---反编译(IDEA)
String name = "牛逼";
switch (name){
case"牛逼":
System.out.println("牛逼");
break; //不写break会有case穿透现象
case"不牛逼":
System.out.println("不牛逼");
break;
default:
System.out.println("啊这");
}
}
}
反编译文件
通过以下方式找到class文件输出路径
找到后拖动到IDEA
点击Refactor
成功查看字节码文件内容
4.dowhile循环
5.for循环
5.1九九乘法表
public class ForDemo4 {
public static void main(String[] args) {
for (int i = 1; i <= 9; i++) {
for(int j = 1;j <= i;j++){
if(j < i){ System.out.print(i+"*"+j+"="+i*j+"\t");
}else{
System.out.print(i+"*"+j+"="+i*j+"\n");
}
}
}
}
}
5.2增强型for循环
public class ForDemo5 {
public static void main(String[] args) {
int[] numbers = {10,20,30,40,50};
//遍历数组
for(int x:numbers){
System.out.println(x);
}
System.out.println("--------------------");
for (int i = 0; i < 5; i++) {
System.out.println(numbers[i]);
}
}
}
6.break、continue
6.1带标签的continue
public class ContinueDemo {
public static void main(String[] args) {
//打印101-150之间所有的质数
//一个合数最大的因数是它的二分之一,所以只需判断到它的一半
int count = 0;
outer: for (int i = 101; i < 150; i++) {
//一个合数最大的因数是它的二分之一,所以只需判断到它的一半
for(int j = 2; j<i/2;j++){
if(i % j==0){
continue outer;
}
}
System.out.println(i);
}
}
}
7.打印三角形
public class TestDemo1 {
public static void main(String[] args) {
//打印三角形,五行
//将一个三角形看成正方形的四部分
for (int i = 0; i < 5; i++) {
for(int j = 5;j > i;j--){
System.out.print(" "); //打印左上的空白三角形
}
for(int j = 0;j <= i;j++){
System.out.print("*"); //打印中间左侧三角形
}
for(int j = 0;j < i;j++){
System.out.print("*");//打印中间右侧三角形
}
System.out.println();
}
}
}