1.用户交互Scanner

  • java.util.Scanner 是java5的新特征,我们可以通过Scanner类来获取用户的输入
  • 基本语法

    1. Scanner s = new Scanner(System.in)
  • 通过Scanner类的next()与nextLine()获取用户输入的字符串,在读取前我们一般需要,使用hasNext()与hasNextLine()判断是否有输入的数据

  • next()和nextline()方法的区别

image.png

  1. // nextline方式
  2. Scanner scanner = new Scanner(System.in);
  3. System.out.println("使用nextLine方式接收:");
  4. if (scanner.hasNextLine()){
  5. String s = scanner.nextLine();
  6. System.out.println("接收的数据"+s);
  7. }
  8. Scanner scanner = new Scanner(System.in);
  9. //next() 方式接收
  10. System.out.println("使用next方式接受:");
  11. if (scanner.hasNext()){
  12. String s = scanner.next();// 程序会等待用户输入完毕he
  13. System.out.println("输出的内容为"+s);
  14. scanner.close();
  15. }
  16. // 进阶
  17. Scanner scanner = new Scanner(System.in);
  18. System.out.println("接收int 类型数据了:");
  19. if(scanner.hasNextInt()){
  20. int i = scanner.nextInt();
  21. System.out.println("接收到的整数是" + i);
  22. }else{
  23. System.out.println("接收到的不是整数");
  24. }
  25. scanner.close();
  26. // 输入多个数字,求其总和与平均数,每输入一个数字用回车确认,通过输入非数字结束输入来输出执行结果
  27. Scanner scanner = new Scanner(System.in);
  28. double sum = 0;
  29. int m = 0;
  30. System.out.println("请输入数: ");
  31. while(scanner.hasNextDouble()){
  32. double x = scanner.nextDouble();
  33. m ++;
  34. sum += x;
  35. }
  36. System.out.println("输入的总和是"+sum);
  37. System.out.println("输入的总次数是"+m);
  38. scanner.close();

2.顺序结构

  • 语句和语句之间,框与框之间从上到下的顺序执行,它是由若干个一次执行的处理步骤组成,它是任何一个算法都离不开的一种算法结构

    3.选择结构

    1) if 选择结构

  • if 多选择结构 if (){}else if {}()else{}

    1. if (x < 60){
    2. System.out.println("不及格");
    3. }else if(x > 60 && x < 80){
    4. System.out.println("良");
    5. }else{
    6. System.out.println("优秀");
    7. }

    2) switch

    image.png

  • case 穿透(不使用break的场景)

    1. char c = 'C';
    2. switch (c){
    3. case 'A':
    4. System.out.println("良");
    5. break;
    6. case 'B':
    7. System.out.println("优秀");
    8. case 'C':
    9. System.out.println("漂亮");
    10. }
  • 字节码文件看不懂,需要反编译

    4.循环结构

    1) while

    1. int i = 10;
    2. while(i > 5){
    3. i --;
    4. System.out.println(i);
    5. }

    2) do while

    1. int i = 10;
    2. do{
    3. System.out.println(i);
    4. i --;
    5. }while (i>5);

    3)for

    ```java package com.scanner;

public class Demo03 { public static void main(String[] args) { // 计算 0-100 奇数和偶数的和 // 用while 和for 循环 计算0-1000能被5整除的数,并且每行输出3个 // 打印 九九乘法表 int oddNum = 0; int evenNum = 0; for (int i = 0; i < 100; i++) { if (i % 2 != 0) { oddNum += i; } else { evenNum += i; } } System.out.println(oddNum); System.out.println(evenNum);

  1. for (int i = 0; i <= 1000; i++) {
  2. if (i % 5 == 0) {
  3. System.out.print(i + "\t");
  4. }
  5. if (i % (5 * 3) == 0) {
  6. System.out.println();
  7. }
  8. }
  9. for (int i = 1; i < 10; i++) {
  10. for (int j = 1; j <= i; j++) {
  11. System.out.print(j + "*" + i + "=" + (j * i) + "\t");
  12. }
  13. System.out.println();
  14. }
  15. }

}

  1. <a name="npG0Y"></a>
  2. #### 4) 增强for循环
  3. ```java
  4. package com.scanner;
  5. public class Demo04 {
  6. public static void main(String[] args) {
  7. int[] numbers = {10,20,40,50,21};
  8. for(int x: numbers){
  9. System.out.println(x);
  10. }
  11. }
  12. }

5) 参数省略

  1. package com.scanner;
  2. public class Demo04 {
  3. public static void main(String[] args) {
  4. for (; i < 5; i++) {
  5. System.out.println(i);
  6. }
  7. }
  8. }
  9. // 1.第一个参数必须要定义,不然编译失败
  10. // 2.第二个参数可以不写,因为没用终止条件所以无限循环下去
  11. // 3.第三个也可以不写,也是无限循环,但是输出的永远是零

5.break & contiune

  1. // break
  2. int i = 0;
  3. while (i < 100){
  4. i ++;
  5. System.out.println(i);
  6. if (i == 10){
  7. break;
  8. }
  9. }
  10. System.out.println("执行结束!");
  11. //continue
  12. int i = 0;
  13. while (i < 15){
  14. i ++;
  15. System.out.println(i);
  16. if (i == 10){
  17. continue;
  18. }
  19. System.out.println("执行 " + i);
  20. }
  21. System.out.println("执行结束!");

6.练习

  1. package com.scanner;
  2. public class Demo05 {
  3. public static void main(String[] args) {
  4. // 打印三角形
  5. for (int i = 1; i <= 5; i++) {
  6. for (int j = 5; j >= i;j --){
  7. System.out.print(" ");
  8. }
  9. for (int j = 1; j <= i;j++){
  10. System.out.print("*");
  11. }
  12. for (int j = 1; j < i;j++){
  13. System.out.print("*");
  14. }
  15. System.out.println();
  16. }
  17. }
  18. }
  19. //************************************************************
  20. *
  21. ***
  22. *****
  23. *******
  24. *********
  25. 进程已结束,退出代码为 0