用户交互Scanner
Scanner对象
-
获取用户输入
-
基本语法
Scanner s = new Scanner(System.in);
-
通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前用hasNext()与hasNextLine()判断输入情况
- next()不能得到带空格的字符串,输入有效字符后,空格将作为结束符
- nextLine()以Enter为结束符,可以得到带空格的字符串
//创建一个扫描对象,用于接收键盘数据
Scanner scanner = new Scanner(System.in);
System.out.println("使用next方式接收:");
//判断用户是否输入字符串
if(scanner.hasNext()){
String str = scanner.next();
System.out.println("输入的内容为:"+str);
}
scanner.close(); //使用IO流的类时,不使用了就应关掉,以免占用资源
package com.YWB.scanner;
import java.util.Scanner;
public class Demo03 {
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++;
sum = sum + x;
}
System.out.println(m+"个数的和为:"+sum);
System.out.println(m+"个数的平均值为:"+(sum/m));
scanner.close();
}
}
顺序结构
- Java的基本结构就是顺序结构,除非特别指明,否则就按照顺序执行
- 顺序结构是最简单的算法结构
- 顺序结构任何算法都离不开的一种基本算法结构
public class ShunXuDemo {
public static void main(String[] args) {
System.out.println("hello01");
System.out.println("hello02");
System.out.println("hello03");
System.out.println("hello04");
System.out.println("hello05");
}
}
选择结构
- if单选择结构
- if双选择结构
- if多选择结构
- 嵌套的if结构
- switch多选择结构
//考试分数大于60就是及格,小于60分就不及格。
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("不及格");
}else {
System.out.println("成绩不合法!");
}
char grade = 'C';
switch (grade) {
case 'A':
System.out.println("优秀");
break;
case 'B':
System.out.println("良好");
break;
case 'C':
System.out.println("及格");
break;
case 'D':
System.out.println("再接再厉");
break;
case 'E':
System.out.println("挂科");
break;
default:
System.out.println("未知等级");
}
循环结构
-
while循环
while(/*布尔表达式*/){ //循环内容 }
- 只要布尔表达式为true,循环就会一直下去
- 大多时候需要一个让表达式失效的方式来结束循环,少部分情况需要循环一直执行,比如服务器的请求响应监听等
-
do…while循环
do{ //代码语句 }while(/*布尔表达式*/)
- 即使不满足布尔表达式的条件,也至少执行一次
- while循环先判断再执行,do…while先执行再判断
int a = 0;
while (a<0){
System.out.println(a);
a++;
}
do{
System.out.println(a);
a++;
}while (a<0);
- for循环
for(/*初始化*/;/*布尔表达式*/;/*更新*/){
//代码语句
}
//嵌套for循环打印九九乘法表
for (int i = 0; i < 10; i++) {
for (int i1 = 1; i1 <= i; i1++) {
System.out.print(i1+"*"+i+"="+(i*i1)+"\t");
}
System.out.println();
}
- 增强for循环
for(/*声明语句*/:/*表达式*/)
{
//代码句子
}
int[] numbers = {10,20,30,40,50};//定义一个数组
for (int i = 0; i < 5; i++) {
System.out.println(numbers[i]);
}
System.out.println("==================");
//增强for循环遍历数组的元素
for (int x : numbers) {
System.out.println(x);
}
break、continue
- break在循环语句的主体部分,可用于控制循环的流程。break用于强行退出循环,不执行循环中剩余的的语句
int i = 0;
while (i<100){
i++;
System.out.println(i);
if (i == 30){
break; //执行到i==30时跳出循环停止执行
}
}
- continue在循环语句体中,用于终止某次循环过程,接着执行下一次是否执行循环的判定
int i = 0;
while (i<100){
i++;
if(i%10==0){
System.out.println();
continue; //当i%10==0时不执行之后的语句,又跳回循环开头执行
}
System.out.print(i+"\t");
}
//输出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.print(i+"\t");
}
小测试:打印一个三角形
public class TestDemo {
public static void main(String[] args) {
for (int i = 1; i <= 5; i++) {
for (int j=1;j<=10;j++){
if (j<=(10/2-i)||j>=(10/2+i)){
System.out.print(" ");
}else {
System.out.print("*");
}
}
System.out.println();
}
}
}
输出结果:
*
***
*****
*******
*********