Day07-ユーザーインタラクションスキャナー、シーケンス構造、選択構造

Day07-ユーザーインタラクションスキャナー、シーケンス構造、選択構造

ユーザーインタラクションスキャナー

Scannerクラスを介してユーザー入力を取得します。

Scannerオブジェクトを作成するための基本的な構文:

import java.util.Scanner;
//导入 java.util 包下的 Scanner类

Scanner s = new Scanner(System.in);
//创建一个对象s,来获取用户输入

Scannerクラスのnext()メソッドとnextLine()メソッドを介して入力文字列を取得します。読み取る前に、通常、hasNext()とhasNextLine()を使用して、入力データがまだあるかどうかを判断する必要があります。

例1:hasNext()、next()メソッド

import java.util.Scanner;     //导入 java.util 包下的 Scanner类
public class Scanner{
    
    
    public static void main(String[] args){
    
    
        Scanner scanner = new Scanner(System.in);
        //创建一个对象scanner,来获取用户输入
        if(scanner.hasNext()){
    
       //用hasNext()判断是否还有输入
            String str = scanner.next();
            //使用next()方法获取用户输入,并储存到字符串str
            System.out.println(str);
        }
        scanner.close();//IO流的类会一直占用资源,需要手动关闭
    }
}//输入: Hello World ; 输出: Hello

例2:hasNextLine()、nextLine()方法

//例1第6~10行:
if(scanner.hasNextLine()){
    
    
    //用hasNextLine()判断是否还有输入
    String str = scanner.nextLine();
    //使用nextLine()方法获取用户输入,并储存到字符串str
    System.out.println(str);
}//输入: Hello World ; 输出: Hello World

2つの入力は同じですが、出力は異なります。

  • next()メソッドには入力が必要です。スペースに遭遇すると、自動的に終了します。

  • nextLine()メソッドはEnterで終わるため、スペースを入力することも入力を入力しないこともできます

  • intやfloatなどの他のタイプのデータ入力があるかどうかを判断するには、hasNextInt()、nextInt()、hasNextFloat()、nextFloat()などを使用します。

【例3】複数の数値を入力し、それらの合計と平均を求めます。Enterを使用して、入力した各数値を確認します。入力を終了し、数値以外を入力して実行結果を出力します。

import java.util.Scanner;
public class Num{
    
    
    public static void main(String[] args) {
    
    
        double num = 0;
        int i = 0;
        Scanner s = new Scanner(System.in);
        while(s.hasNextDouble()){
    
    
            double digtal = s.nextDouble();
            num += digtal;
            i++;
        }
        System.out.println(i +"个数的和为:" + num);
        System.out.println(i +"个数的平均数为:" + num / i);
        s.close();
    }
}//输入10	20	30	40	a	
//输出4个数的和为:100.0	4个数的平均数为:25.0

シーケンス構造

シーケンス構造は、Javaの最も単純なアルゴリズム構造と基本構造です。

文と文の間で、上から下に進みます。

構造を選択してください

構造を選択した場合

  1. 単一選択構造の場合:

    if(布尔表达式){
          
          
        语句1;
    }//布尔表达式为true时,执行语句1; 否则不执行
    
  2. 二重選択構造の場合:

    if(布尔表达式){
          
          
        语句1;
    }else{
          
          
        语句2;
    }//布尔表达式为true时,执行语句1; 否则执行语句2。
    
  3. 多肢選択構造の場合:

    if(布尔表达式1){
          
          
        语句1;
    }else if(布尔表达式2){
          
          
        语句2;
    }else if(布尔表达式3){
          
          
        语句3;
    }else{
          
          
        语句4;
    }//布尔表达式1为true时,执行语句1; 否则判断布尔表达式2,若为true,执行语句2;否则判断布尔表达式3,若为true,执行语句3;否则执行语句4。
    
  • ネストされた構造との違い

    ステートメント1を実行するための条件は、ブール式1が真であることです。

    ステートメント2を実行するための条件は、ブール式1がfalseで、2がtrueであるということです。

    ステートメント3を実行するための条件は、ブール式1と2が両方とも偽であり、3が真であるということです。

    ステートメント4を実行するための条件は、ブール式1、2、および3がすべて偽であるということです。

    【例】テストの点数は100点満点、80点以上が優秀、60〜80点が良好、60点以下が不合格です。

    import java.util.Scanner;
    public class Demo{
          
          
        public static void main(String[] args){
          
          
           Scanner s =  new Scanner(System.in);
            int score = s.nextInt();
            if(score == 100){
          
          
                System.out.println("恭喜满分!");
            }else if(score >= 80 && score < 100){
          
          
                System.out.println("优秀!");
            }else if(score >= 60 && score < 80){
          
          
                System.out.println("表现良好");
            }else if(score >= 0 && score < 60){
          
          
                System.out.println("不及格,仍需努力。");
            }else{
          
          
                System.out.println("成绩格式错误!");
            }
            s.close();
        }
    }
    
  1. ネストされた構造の場合:

    if(布尔表达式1){
          
          
        if(布尔表达式2){
          
          
            语句1;
        }else{
          
          
            语句2;
        }
    }else{
          
          
        语句3;
    }
    
  • 複数選択構造の場合とは異なります

    ステートメント1を実行するための条件は、ブール式1と2が両方とも真であるということです。

    ステートメント2を実行するための条件は、ブール式1が真で2が偽であるということです。

    ステートメント3を実行するための条件は、ブール式1がfalseであることです。

複数選択構造の切り替え

多肢選択構造の別の実装は、switchcaseステートメントです。

switch caseステートメントは、変数が一連の値の特定の値に等しいかどうかを判別し、各値はブランチと呼ばれます。

switch(expression){
    
    
	case value 1 :
	//语句
	break; //可有可无
	case value 2 :
	//语句
	break; //可有可无
	...
    ...
	default : //可有可无
	//语句
}
  • switchステートメントの変数タイプは、byte、short、int、またはcharです。Java SE 7以降、スイッチは文字列型をサポートします。

  • switchステートメントには複数のcaseステートメントを含めることができます。各ケースの後には、比較する値とコロンが続きます。

  • caseステートメントの値のデータ型は、変数のデータ型と同じである必要があります。

  • 変数の値がcaseステートメントの値と等しい場合、caseステートメントの後のステートメントが実行を開始し、breakステートメントが表示されるまでswitchステートメントはジャンプしません。[casepenetration] **、それ以外の場合、プログラム次のcaseステートメントを実行し続けます。breakステートメントが表示されるまで。

  • switchステートメントには、デフォルトのブランチを含めることができます。これは通常、最後のブランチです。デフォルトでは、実行時間に一致するステートメントと変数値はありませんデフォルトのブランチはbreakステートメントを必要としません。

例1:[ケースの浸透]

public static void main(String args[]){
    
    
	int i = 1;
	switch(i){
    
    
		case 0:
			System.out.println("0");
		case 1:
			System.out.println("1");
		case 2:
			System.out.println("2");
		case 3:
			System.out.println("3");
			break;
		default:
			System.out.println("default");
	}
}//输出1	 2	 3。【case穿透】	

例2:[JDK7は文字列式を追加します]

public static void main(String[] args) {
    
    
	String name = "Crown";
	switch (name) {
    
         //JDK7的新特性,表达式的内容可以是字符串。
		case "明天也有晚霞嘛":
			System.out.println("输入为:明天也有晚霞嘛");
			break;
		case "Crown":
			System.out.println("输入为:Crown");
			break;
		default:
			System.out.println("无法匹配");
			break;
	}
}

おすすめ

転載: blog.csdn.net/weixin_46330563/article/details/114859686