zoukankan      html  css  js  c++  java
  • 【Java 小白菜入门笔记 1.3】流程控制、数组和输入输出

    实验来源:https://www.shiyanlou.com/courses/1230

    流程控制
    if else ,switch, do-while, while

    if(condition){
        todo
    }
    else if(other condition){
        todo
    }
    else{
        todo
    }
    
    switch(value){
        case v1:
            todo
            break;
        case v2:
            todo
            break;
        default:
            todo
    }
    
    while(condition){
        todo
    }
    
    do{
        todo
    }while(condition)
    

    for循环,和C++的格式一样,举例;(计算1到1000的所有偶数之和)

    public class SumOfEven{
        public static void main(String[] args){
            int sum = 0;
            for (int i = 1; i <= 1000; i++){
                if (0 == i % 2){
                    sum += i;
                }
            }
            System.out.println("sum of 1-1000 : " + sum);
        }
    }
    

    输出结果:

    sum of 1-1000 : 250500
    

    对输入字符去除空格实验:

    import java.util.Scanner;
    
    public class StringUtil{
        public static void main(String[] args){
            Scanner input = new Scanner(System.in);
            String a = input.nextLine();
            String prt = new String("");
            for(int i = 0; i < a.length(); i++){
                if(' ' != a.charAt(i)){
                    prt = prt + a.charAt(i);
                }
            }
            System.out.println(prt);
        }
    }
    

    输入输出结果:

    shi ya n  lou
    shiyanlou
    

    注意:

    1. for循环的i一定要先声明类型 int i = 0;
    2. String中取元素(char)应该用charAt(index)方法,而不是Python中的直接当数组来取值a[index]这种。
    3. String的拼接直接用加号即可。

    字符串比较实验:

    import java.util.Scanner;
    
    public class ContrastString{
        public static void main(String[] args){
            Scanner input = new Scanner(System.in);
            String str1 = input.nextLine();
            String str2 = input.nextLine();
            boolean is_same = true;
            for(int i = 0; i < str1.length(); i++){
                if(str1.charAt(i) != str2.charAt(i)){
                    is_same = false;
                    break;
                }
            }
            if(is_same == true){
                System.out.println("相同");
            }
            else{
                System.out.println("不同");
            }
        }
    }
    

    输入输出:

    abc3
    abc3
    相同
    

    注意:

    1. 用Scanner生成一个从System.in获取数据的对象,然后用它的nextLine方法读入一行,存到String中。
    2. Java里的boolean类型的取值是true和false(小写),与python不同。
    3. 仍然是注意在使用变量前先声明类型。

    打印星期几实验:

    import java.util.Scanner;
    
    public class PrintWeek{
        public static void main(String[] args){
            Scanner input = new Scanner(System.in);
            int i = input.nextInt();
            String WeekDay = new String("");
            switch(i){
                case 1:
                    WeekDay = "一";
                    break;
                case 2:
                    WeekDay = "二";
                    break;
                case 3:
                    WeekDay = "三";
                    break;
                case 4:
                    WeekDay = "四";
                    break;
                case 5:
                    WeekDay = "五";
                    break;
                case 6:
                    WeekDay = "六";
                    break;
                case 7:
                    WeekDay = "天";
                    break;
                default:
                    WeekDay = " ";
            }
            System.out.println("今天是星期" + WeekDay);
            return;
        }
    }
    

    输入输出测试:

    shiyanlou:project/ $ java PrintWeek                       [17:25:57]
    1
    今天是星期一
    shiyanlou:project/ $ java PrintWeek                       [17:26:01]
    7
    今天是星期天
    shiyanlou:project/ $ java PrintWeek                       [17:26:08]
    8
    今天是星期 
    

    数组

    数组的定义方式

    数据类型[ ] 数组名; 
    数据类型 数组名[ ];
    数组名 = new  数据类型 [ 数组长度 ];
    

    一些例子:

    int [] int_array;
    int int_array[];
    int_array = new int[10];
    String [] name;
    int [] ages = {12, 18, 9, 33, 45, 60};
    

    Java中对数组的遍历有一个foreach 的写法,即:

    for(int age:ages){
    	todo sth.
    }
    

    有点类似于Python中 for i in arr 的语句。

    注意:Java中的数组是用大括号引起来的,和Python中的中括号不同。Python的大括号是用来初始化集合(set)类型的。

    二维数组的定义方式:

    int [][] score = new int[2][3];
    
    int [][] score;
    score = new int[3][4];
    
    int [][] score = {{1,2},{3,4}};
    

    一个栗子,生成一个String为元素的数组,并且依次打印元素值。

    public class ArrayTest{
        public static void main(String[] args){
            String [][] name = {{"zhao", "qian", "sun"}, 
                                {"li", "zhou", "wu"}};
            for (int i = 0; i < name.length; i++){
                for (int j = 0; j < name[0].length; j++){
                    System.out.println(name[i][j]);
                }
            }
            return;
        }
    }
    

    数组应用实验,求分数平均值

    public class AverageScore{
        public static void main(String args[]){
            int [] score_list = {61,57,95,85,75,65,44,66,90,32};
            int sum = 0;
            for(int i = 0; i < score_list.length; i++){
                sum = sum + score_list[i];
            }
            double avg = sum / score_list.length;
            System.out.println("Average Score is " + avg);
            return;
        }
    }
    

    仍要注意类型的声明,以及return和main的返回值的对应关系。
    对于数组,可以用中括号取元素,而String则需要用其自带的方法,即charAt。
    对于array,用length(不带括号)获取数组长度。而String中的带括号。
    (实际上说明array的length是一个属性,而String类的length是它的一个方法)

    实验任务:从console每行输入一个字符串,保存到数组,直到遇到end,将所有除了end以为的之前的字符按顺序输出。

    import java.util.Scanner;
    
    public class InputTest{
        public static void main(String[] args){
            Scanner input = new Scanner(System.in);
            String [] data = new String [100];
            int cnt = 0;
            while(cnt < 100){
                String in_str = input.nextLine();
                if(! in_str.equals("end")){
                    data[cnt] = in_str;
                    cnt += 1;
                }
                else{
                    break;
                }
            }
            for(int j = 0; j < cnt; j++){
                System.out.println(data[j]);
            }
        }
    }
    

    这里要注意的一点是:字符串String类型比较不用 == ,如果用了,返回的不是两个String 是否相同,而是两个String是否指向了同一个对象。应该用String类的自带方法 equals 来比较。

    上面的写法不太优雅,因为用了while里面的判断。实际上可以直接用Scanner的 hasNext 方法来实现对于退出字符的判断。如下所示:

    import java.util.Scanner;
    
    public class InputTest{
        public static void main(String[] args){
            Scanner input = new Scanner(System.in);
            String [] data = new String [100];
            int cnt = 0;
            while(!input.hasNext("end")){
                data[cnt] = input.nextLine();
                cnt += 1;
            }
            for(int j = 0; j < cnt; j++){
                System.out.println(data[j]);
            }
        }
    }
    

    实验:给定数组输出最大最小值。

    public class MaxAndMin{
        public static void main(String args[]){
            int [] data = {313, 89, 123, 323, 313, 15, 90, 56, 39};
            int Max = data[0];
            int Min = data[0];
            for(int num:data){
                if(num > Max){
                    Max = num;
                }
                if(num < Min){
                    Min = num;
                }
            }
            System.out.println("Mininum is " + Min);
            System.out.println("Maximum is " + Max);
        }
    }
    

    注意:for-loop用 foreach 的形式时,也需要对冒号前的元素变量指定类型。
    比如 for(int num:data)

    2020年6月27日00:50:53
    北京 永丰

  • 相关阅读:
    servlet里的forward和redirect的区别
    JSP九大内置对象
    float和Float的区别
    Throwable相关知识1
    常见异常和错误总结
    final/finalize/finally的区别
    mysql命令大全
    mongodb安装
    mysql编译安装(详细)
    mysql的三种安装方式(详细)
  • 原文地址:https://www.cnblogs.com/morikokyuro/p/13256655.html
Copyright © 2011-2022 走看看