day 3

从键盘输入值(char类型的转换)

//从键盘获取不同类型的变量

/*
第一步:导包
第二步:Scannner的实例化
第三步:调用Scanner类的相关方法,获取指定类型的变量
*/

import java.util.Scanner;
class transTest{
    public static void main(String[] args){
        Scanner scan = new Scanner(System.in); //实例化一个对象
        String name = scan.next();
        double a = scan.nextDouble();
        long b = scan.nextLong();
        boolean c = scan.nextBoolean();
        int d = scan.nextInt();
        //对于char类型的获取,scanner没有提供相关方法,只能获取字符串然后转换
        String gender = scan.next();
        char genderChar = gender.charAt(0);  // charAt(index)
    }
}

Math.random() 

// 随机生成10-99之间的整数,利用到Math.random() , 但返回值是double型,且范围在[0.0,1.0)

class test{
    public static void main(String[] args){
        double value = Math.random();  // [0.0,1.0)
        value =  Math.random()*90; //[0.0,90.0)
        value =  Math.random()*90+10; //[10.0,100.0)
        int value1 = (int)Math.random()*90+10;  //[10,99)

        int value2 = (int) (Math.random() * (b - a + 1)) + a;  //生成[a,b]之间的整数
}

switch 语句

         switch(表达式):表达式不能放Boolean类型的值

 练习题

1. 使用 switch 把小写类型的 char 型转为大写。只转换 a, b, c,  其它的输
“other”
提示: String word = scan.next(); char c = word.charAt(0); switch(c){}
import java.util.Scanner;
class transTest{
    public static void main(String[] args) {
         Scanner scan = new Scanner(System.in);
         String word = scan.next();
         char word1 = word.charAt(0);
         switch (word1){
             case 'a':
                 System.out.println('A');
                 break;
             case 'b':
                 System.out.println('B');
                 break;
             case 'c':
                 System.out.println('C');
                 break;
             default:
                 System.out.println("other");
                 break;
         }
        }
}
2. 对学生成绩大于 60 分的,输出“合格”。低于 60 分的,输出“不合格”。
import java.util.Scanner;
class score{
    public static void main(String[] args) {
         Scanner scan = new Scanner(System.in);
         double score = scan.nextDouble();
//         char word1 = word.charAt(0);
         switch ((int)(score/60.0)){
             case 0:
                 System.out.println("不及格");
                 break;
             case 1:
                 System.out.println("及格");
                 break;
         }
        }
}

3. 编写程序:从键盘上输入2019年的“month”和“day”,要求通过程序输出输入的日期为2019年的第几天。

import java.util.Scanner;
class countDay{
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int month = scan.nextInt();
        int day = scan.nextInt();
        int sumDays = 0;
        switch (month){
            case 12:
                sumDays += 31;
            case 11:
                sumDays += 31;
            case 10:
                sumDays += 30;
            case 9:
                sumDays += 31;
            case 8:
                sumDays += 31;
            case 7:
                sumDays += 30;
            case 6:
                sumDays += 31;
            case 5:
                sumDays += 30;
            case 4:
                sumDays += 31;
            case 3:
                sumDays += 28;
            case 2:
                sumDays += 31;
            case 1:
                sumDays += day;
        }
        System.out.println("2009年"+month+"月"+day+"日是当年的第"+sumDays+"天");
    }
}

4、从键盘分别输入年、月、日,判断这一天是当年的第几天

注:判断一年是否是闰年的标准:

1 )可以被 4 整除,但不可被 100 整除
或者
2)可以被 400 整除
import java.util.Scanner;
class countDay {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int year = scan.nextInt();
        int month = scan.nextInt();
        int day = scan.nextInt();
        int sumDays = 0;
        switch (month){
            case 12:
                sumDays += 31;
            case 11:
                sumDays += 31;
            case 10:
                sumDays += 30;
            case 9:
                sumDays += 31;
            case 8:
                sumDays += 31;
            case 7:
                sumDays += 30;
            case 6:
                sumDays += 31;
            case 5:
                sumDays += 30;
            case 4:
                sumDays += 31;
            case 3:
                if ((year % 4==0 && year % 100 !=0)|| (year % 400 ==0)){
                    sumDays += 29;
                }else{
                    sumDays += 28;
                }
            case 2:
                sumDays += 31;
            case 1:
                sumDays += day;
        }
        System.out.println(year+"年"+month+"月"+day+"日是当年的第"+sumDays+"天");
    }
}

5、输入两个正整数mn,求其最大公约数和最小公倍数。

比如:1220的最大公约数是4,最小公倍数是60

说明:break关键字的使用

import java.util.Scanner;
class dogsAge {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int m = scan.nextInt();
        int n = scan.nextInt();
        int min = (m < n)? m:n;
        int max = (m > n)? m:n;
        for (int i = min ; i >= 1 ; i--){
            if(m % i ==0 && n % i ==0) {
                System.out.println("最大公约数是"+ i);
                break;  //输出最大的,即最大公约数
            }
        }
        for (int j = max;j<m*n;j++){
            if (j % m==0 && j% n == 0){
                System.out.println("最大公倍数是" + j);
                break;
            }
        }
    }
}

6、从键盘读入个数不确定的整数,并判断读入的正数和负数的个数,输入为0时结束程序

class countTest{
    public static void main(String[] args){
        Scanner scan = new Scanner(System.in); //实例化一个对象
        int positiveNumber = 0;
        int negativeNumber = 0;
        while (true){
            int number = scan.nextInt();
            if (number > 0){
                positiveNumber++;
            }else if (number < 0){
                negativeNumber++;
            }else{
                break;
            }
        }
        System.out.println("正数的个数为"+positiveNumber+"个");
        System.out.println("负数的个数为"+negativeNumber+"个");
    }
}

7、嵌套循环输出九九乘法表

class mulTest{
    public static void main(String[] args){
        Scanner scan = new Scanner(System.in); //实例化一个对象
        for (int i=1;i<=9;i++){
            for(int j=1;j<=i;j++){
                System.out.print(i + "*" + j + "=" + (i * j) + " ");  //采用不换行输出
            }
            System.out.println();  //换行
        }
    }
}

8、输出100以内所有的质数

class zhiShuTest{
    public static void main(String[] args){
//        Scanner scan = new Scanner(System.in); //实例化一个对象
//        int num = scan.nextInt();
        for (int i=2;i<=100;i++){  //最小的质数2开始遍历
            boolean flag = true;
            for (int j=2;j<i;j++){
                if (i % j == 0){
                    flag = false;  //能被1和本身之外的数整除,非质数,将flag=false
                }
            }
            if (flag == true){
                System.out.println(i);
            }
        }
    }
}



//优化后的算法

class zhiShuTest{
    public static void main(String[] args){
//        Scanner scan = new Scanner(System.in); //实例化一个对象
//        int num = scan.nextInt();
        long start = System.currentTimeMillis();  //获取当前时间
        for (int i=2;i<=100;i++){  //最小的质数2开始遍历
            boolean flag = true;
            for (int j=2;j<=Math.sqrt(i);j++){  //计算到根号i就可以
                if (i % j == 0){
                    flag = false;  //能被1和本身之外的数整除,非质数,将flag=false
                    break;
                }
            }
            if (flag == true){
                System.out.println(i);
            }
        }
        long end = System.currentTimeMillis();
        System.out.println("所花费的时间为"+ (end-start));  //计算执行花费时间
    }
}


//采用label的写法


class zhiShuTest{
    public static void main(String[] args){
//        Scanner scan = new Scanner(System.in); //实例化一个对象
//        int num = scan.nextInt();
        long start = System.currentTimeMillis();  //获取当前时间
        Label:for (int i=2;i<=1000;i++){  //最小的质数2开始遍历
            boolean flag = true;
            for (int j=2;j<=Math.sqrt(i);j++){  //计算到根号i就可以
                if (i % j == 0){
                    continue Label;  //结束指定标签的当层循环的当次循环  ,除尽,不是质数,则直接跳到下一个i
//                    break Label;  //结束指定标签的当层循环
                }
            }
            System.out.println(i);
        }
        long end = System.currentTimeMillis();
        System.out.println("所花费的时间为"+ (end-start));  //计算执行花费时间
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值