java学习笔记03


Java学习笔记03

封面pid:78790789

Java输入

java.util.Scanner是Java5的新特性,可以用此获取用户的输入。想要通过控制台进行输入,首先要构造一个Scanner对象,并与标准输入流System.in关联

Scanner in = new Scanner(System.in);

现在可以使用Scanner类的各种方法实现输入操作了。nextLine方法将输入一整行。

String name = in.nextLine();

next方法以空格为分隔读取单个单词

String firstName = in.next();

nextIntnextFloatnextDouble用于输入整数和浮点数。

next()注意事项:

  • 读取到有效字符之后才能结束输入
  • 对有效字符之前的空白不会接收
  • 有效字符之后的空白作为结束符
  • 不能得到带空格的字符串

nextLine()注意事项:

  • 以enter为结束符,可以获得空白

读取前一般使用hasNext()hasNextLine()hasNextInthasNextFloathasNextDouble等判断是否有输入的数据。

import java.util.*;
public class Demo {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        if(in.hasNext()) {
            String str = in.next();
            System.out.println(str);
        }
        in.close();//在main方法里面关闭输入流
    }
}

题目:输入多个数字,求其总和和平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并执行输出。

import java.util.*;
public class Demo {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        double sum = 0.0;
        double average = 0.0;
        int count = 0;
        while(in.hasNextDouble()) {
            double num = in.nextDouble();
            sum = sum + num;
            count = count + 1;
        }
        in.close();
        average = sum / count;
        System.out.println(sum+" "+average);
    }
}

switch case

switch case是多选择结构的一个实现方式。switch的值可以是char,byte,short或int,也可以是枚举常量,从Java SE 7开始还支持字符串字面量。

import java.util.*;
public class Demo {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int num = in.nextInt();
        switch(num) {
        case 1:
            System.out.println("输入的数字是1");
            break;
        case 2:
            System.out.println("输入的数字是2");
            break;
        default:
            System.out.println("输入的既不是1也不是2");
            break;
        }
    }
}

注意每一个case一定要有对应的break,否则会导致case穿透。程序会一直跑到有break的地方才会停止。如果把case 1的break去掉再输入1会导致case 1和case 2的输出都被输出。

如果所有的case都不满足,就会执行default语句的内容。

循环

对于while循环,如果不满足条件语句一次都不会执行。而do while循环至少会执行一次。do while会先执行再进行判断。

for循环是支持迭代的一种通用结构,其执行次数在执行前就已确定。其格式为for(初始化;布尔表达式;更新)

IDEA支持快速创建循环,只需要输入100.for然后回车就能得到一个循环。

题目1:计算0到100之间的奇数和偶数的和:

public class Demo {
    public static void main(String[] args) {
        int sumOdd = 0;
        int sumEven = 0;
        for(int i=1;i<=100;i=i+2){
            sumOdd = sumOdd + i;
        }
        for(int j=0;j<=100;j=j+2){
            sumEven = sumEven + j;
        }
        System.out.println(sumOdd+" "+sumEven);
    }
}

题目2:输出1-1000之内能被5整除的数,每行输出三个

public class Demo {
    public static void main(String[] args) {
        for (int i = 1; i <= 1000; i++) {
            if(i % 5 == 0){
                System.out.print(i+" ");
            }
            if(i % 15 == 0){
                System.out.println();
            }
        }
    }
}

题目3:打印九九乘法表

public class Demo {
    public static void main(String[] args) {
        for (int i = 1; i <= 9; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.print(j+"*"+i+"="+i*j+" ");
            }
            System.out.println();
        }
    }
}

Java5之后引入了增强for循环:for each,可以依次处理数组或者其他元素集合中的每一个元素,语句为 for (varible : collection) statement,具体示例如下:

public class Demo {
    public static void main(String[] args) {
        int[] numbers = {1,2,3,4,5};
        for(int x : numbers){
            System.out.println(x);
        }
    }
}

结果将数组中的每一个元素都输出了。

break continue

break可以跳出任何循环,不执行剩余语句。continue可以跳过本次循环接着执行下一次循环。

goto是Java保留字,但并没有被使用。Java中带标签的break和continue语句有类似其他语言中goto的作用。标签通常被放在循环语句之前,因为当我们希望在循环中嵌套另一个循环的时候,break和continue通常只中断当前循环,但使用标签后会中断在存在标签的地方。

public class Demo {
    public static void main(String[] args) {
        //输出101-150之间的所有质数
        label:
        for (int i = 101; i <= 150; i++) {
            for(int j = 2; j < i/2 ;j++){
                if(i % j == 0){
                    continue label;
                }
            }
            System.out.println(i);
        }
    }
}

运行到continue label时,会返回到 label: 所在的位置重新执行下一次循环。当然,不建议使用这种方式。大多数人认为使用goto或者类似goto的方式带来的弊端远远大于其好处。

题目:用*打印一个5行的三角形

public class Demo {
    public static void main(String[] args) {
        for (int i = 0; i < 5; i++) {
            for (int m = 5; m > i; m--) {
                System.out.print(" ");
            }
            for (int j = 0; j < i; j++) {
                System.out.print("*");
            }
            for (int k = 0; k <= i; k++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }
}

输出结果:

     *
    ***
   *****
  *******
 *********

实际上分了三部分输出,第一部分是之前的空格,第二部分是左半个三角形,第三部分是右半个三角形+中间一列。程序的输出是一行一行输出,因此分析的时候也应当按行分析。


文章作者: eacryo
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 eacryo !
  目录