Java练习Day_03

文章详细介绍了Java编程中的基础操作,包括使用Scanner类从用户输入获取整数、字符,以及进行奇偶性、字符类型、价格折扣和星座/生肖判断等条件逻辑。
摘要由CSDN通过智能技术生成

第一题

package exercise.day03;

import java.util.Scanner;

public class exercise1 {
    public static void main(String[] args) {
        //键盘录入引用
        Scanner sc = new Scanner(System.in);
        //提示用户
        System.out.println("请输入一个整数: ");
        //接收用户输入的整数
        int num = sc.nextInt();

        //判断输入数字是奇数还是偶数
        if(num % 2 == 0){
            System.out.println(num + "是偶数");
        }else{
            System.out.println(num + "是奇数");
        }
    }
}

第二题

package exercise.day03;

import java.util.Scanner;

public class exercise2 {
    public static void main(String[] args) {
        //引入键盘录入
        Scanner sc = new Scanner(System.in);
        //提示用户
        System.out.println("请输入一个字符: ");
        //用char类型接收用户输入的一个字符
        char c = sc.next().charAt(0);

        //if语句三种情况
        if(c >= '0' && c <= '9'){
            System.out.println(c + "是数字.");
        }else if (c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z'){
            System.out.println(c + "是字母.");
        }else{
            System.out.println("非数字非字母的其他字符.");
        }
    }
}

[补接收char类型键盘录入字符]

Scanner sc = new Scanner(System.in);
		System.out.println("请输入字符");
		char c = sc.next().charAt(0);
		System.out.println("打印出来为:"+c);

Scanner源码中,我们可知输入String类型实际是调用了next()方法,而输入字符实际上还是输入字符串,然后取字符串的第一个字符. 即str.charAt(0) 

第三题

package exercise.day03;

import java.util.Scanner;

public class exercise3 {
    public static void main(String[] args) {
        //引入键盘录入
        Scanner sc = new Scanner(System.in);
        //提示用户
        System.out.println("请输入总价格: ");
        //用double类型获取
        double totalPrice = sc.nextDouble();

        //定义变量折扣discount
        double discount = 1;

        //判断价格区间
        if(totalPrice >= 500){
            discount = 0.5;
        }else if(totalPrice >= 400 && totalPrice < 500){
            discount = 0.6;
        }else if(totalPrice >= 300 && totalPrice < 400){
            discount = 0.7;
        }else if(totalPrice >= 200 && totalPrice < 300){
            discount = 0.8;
        }else if(totalPrice >= 0 && totalPrice < 200){
            discount = 1;
        }else if(totalPrice < 0){
            System.out.println("输入错误");
        }
        System.out.println("总价 : " + totalPrice);
        System.out.println("折扣 : " + discount);
        System.out.println("折扣后总价 : " + totalPrice * discount);


    }
}

提示用户语句需要在用变量接收用户输入数据语句之前

第四题

package exercise.day03;

import java.util.Scanner;

public class exercise4 {
    public static void main(String[] args) {
        //引入键盘录入
        Scanner sc = new Scanner(System.in);
        //提示用户
        System.out.println("请输入月份: ");
        //用int型接收月份
        int month = sc.nextInt();
        //提示用户
        System.out.println("请输入日期: ");
        //用int型接收日期
        int day = sc.nextInt();

        //判断语句
        if ((month == 1 && day >= 20) || (month == 2 && day <= 18)) {
            System.out.println("生日" + month + "月" + day + "日是水瓶座");
        } else if ((month == 2 && day >= 19) || (month == 3 && day <= 20)) {
            System.out.println("生日" + month + "月" + day + "日是双鱼座");
        }else if ((month == 3 && day >= 21) || (month == 4 && day <= 19)) {
            System.out.println("生日" + month + "月" + day + "日是白羊座");
        }else if ((month == 4 && day >= 20) || (month == 5 && day <= 20)) {
            System.out.println("生日" + month + "月" + day + "日是金牛座");
        }else if ((month == 5 && day >= 21) || (month == 6 && day <= 21)) {
            System.out.println("生日" + month + "月" + day + "日是双子座");
        }else if ((month == 6 && day >= 22) || (month == 7 && day <= 22)) {
            System.out.println("生日" + month + "月" + day + "日是巨蟹座");
        }else if ((month == 7 && day >= 23) || (month == 8 && day <= 22)) {
            System.out.println("生日" + month + "月" + day + "日是狮子座");
        }else if ((month == 8 && day >= 23) || (month == 9 && day <= 22)) {
            System.out.println("生日" + month + "月" + day + "日是处女座");
        }else if ((month == 9 && day >= 23) || (month == 10 && day <= 23)) {
            System.out.println("生日" + month + "月" + day + "日是天平座");
        }else if ((month == 10 && day >= 24) || (month == 11 && day <= 22)) {
            System.out.println("生日" + month + "月" + day + "日是天蝎座");
        }else if ((month == 11 && day >= 23) || (month == 12 && day <= 21)) {
            System.out.println("生日" + month + "月" + day + "日是射手座");
        }else if ((month == 12 && day >= 22) || (month == 1 && day <= 19)) {
            System.out.println("生日" + month + "月" + day + "日是摩羯座");
        }

    }
}

但这个代码还有遗漏的地方是没有限制month和day的范围,如果用户输入的数值不在范围内,应该能有报错才好

第五题

package exercise.day03;

import java.util.Scanner;

public class exercise5 {
    public static void main(String[] args) {
        //引入键盘录入
        Scanner sc = new Scanner(System.in);
        //提示语句
        System.out.println("请输入您的出生年份: ");
        //int类型接收年份
        int year = sc.nextInt();

        //判断语句switch
        switch(year % 12){
            case 9 :
                System.out.println("您的生肖是蛇");
                break;
            case 10 :
                System.out.println("您的生肖是马");
                break;
            case 11 :
                System.out.println("您的生肖是羊");
                break;
            case 0 :
                System.out.println("您的生肖是猴");
                break;
            case 1 :
                System.out.println("您的生肖是鸡");
                break;
            case 2 :
                System.out.println("您的生肖是狗");
                break;
            case 3 :
                System.out.println("您的生肖是猪");
                break;
            case 4 :
                System.out.println("您的生肖是鼠");
                break;
            case 5 :
                System.out.println("您的生肖是牛");
                break;
            case 6 :
                System.out.println("您的生肖是虎");
                break;
            case 7 :
                System.out.println("您的生肖是兔");
                break;
            case 8 :
                System.out.println("您的生肖是龙");
                break;
        }
    }
}

[补switch格式]

第六题

package exercise.day03;

import java.util.Scanner;

public class exercise6 {
    public static void main(String[] args) {
        //引入键盘录入
        Scanner sc = new Scanner(System.in);
        //提示用户输入abc
        System.out.println("请输入方程的参数a: ");
        double a = sc.nextDouble();
        System.out.println("请输入方程的参数b: ");
        double b = sc.nextDouble();
        System.out.println("请输入方程的参数c: ");
        double c = sc.nextDouble();

        //if else语句判断条件a != 0;
        if(a != 0){
            //用tr表示b²-4ac
            double tr = b * b - 4 * a * c;
            //进行三种情况判断
            if(tr > 0){
                double x1 = (-b + Math.sqrt(tr)) / (2 * a);
                double x2 = (-b - Math.sqrt(tr)) / (2 * a);
                System.out.println("方程有两个解:  x1 = " + x1 + " , x2 = " + x2);
            }else if(tr == 0){
                double x3 = -b / (2 * a);
                System.out.println("方程只有一个解:  x = " + x3);
            }else{
                System.out.println("方程无解");
            }
        }else if(a == 0 && b != 0){
            double x4 = -c / b;
            System.out.println("方程只有一个解: " + x4);
        }else{
            System.out.println("不是方程");
        }
    }
}

[补数学开方表示]

Math.sqrt(需要开方的变量)

第七题

方法一

利用case穿透,switch中case不加break

package exercise.day03;

import java.util.Scanner;

public class exercise7_1 {
    public static void main(String[] args) {
        //引入键盘录入
        Scanner sc = new Scanner(System.in);
        //分别录入月和日
        System.out.println("请输入月份: ");
        int month = sc.nextInt();
        System.out.println("请输入日期: ");
        int date = sc.nextInt();

        //定义天数
        int day = 0;

        //累加[1, month - 1]个月满月天数
        switch (month) {
            case 12:
                //累加到1-11月
                day = day + 30;//11月天数
                //没有break, 继续往下走
            case 11:
                //累加到1-10月
                day = day + 31;//10月天数
                //没有break, 继续往下走
            case 10:
                day = day + 30;
            case 9:
                day = day + 31;
            case 8:
                day = day + 31;
            case 7:
                day = day + 30;
            case 6:
                day = day + 31;
            case 5:
                day = day + 30;
            case 4:
                day = day + 31;
            case 3:
                day = day + 28;
            case 2:
                day = day + 31;
            case 1:
                day = day + 0;
        }
        day = day + date - 1;
        int week = 2 + day;
        week = week % 7;

        switch (week) {
            case 1:
                System.out.println(month + "月" + date + "日是星期一");
                break;
            case 2:
                System.out.println(month + "月" + date + "日是星期二");
                break;
            case 3:
                System.out.println(month + "月" + date + "日是星期三");
                break;
            case 4:
                System.out.println(month + "月" + date + "日是星期四");
                break;
            case 5:
                System.out.println(month + "月" + date + "日是星期五");
                break;
            case 6:
                System.out.println(month + "月" + date + "日是星期六");
                break;
            case 0:
                System.out.println(month + "月" + date + "日是星期日");
                break;
        }
    }
}

方法二

在while中使用if判断加多少天

package exercise.day03;

import java.util.Scanner;

public class exercise7 {
    public static void main(String[] args) {
        //引入键盘录入
        Scanner sc = new Scanner(System.in);
        //提示用户输入月份
        System.out.println("请输入月份: ");
        int month = sc.nextInt();
        //提示用户输入日期
        System.out.println("请输入日期: ");
        int date = sc.nextInt();
        //定义天数
        int day = (month - 1) * 31  + date - 1;
        //定义i
        int i = 1, j = 1;
        //定义星期
        int week = 0;

        while(i < month){

            if(month == 4 || month == 6 || month == 9 || month == 11){
                day = day + 30;
            }else if(month == 2){
                day = day +28;
            }else{
                day = day + 31;
            }
            i ++;
        }
        week = (day + 2) % 7;

        switch (week){
            case 1:
                System.out.println(month + "月" + date + "日是星期一");
                break;
            case 2:
                System.out.println(month + "月" + date + "日是星期二");
                break;
            case 3:
                System.out.println(month + "月" + date + "日是星期三");
                break;
            case 4:
                System.out.println(month + "月" + date + "日是星期四");
                break;
            case 5:
                System.out.println(month + "月" + date + "日是星期五");
                break;
            case 6:
                System.out.println(month + "月" + date + "日是星期六");
                break;
            case 0:
                System.out.println(month + "月" + date + "日是星期日");
                break;

        }
    }
}

方法二有问题待更改!!!

简答题

switch是否能作用在byte上,是否能作用在long上,是否能作用在String上?

能作用在byte和String上,不能作用在long上

因为switch默认为int型,long不能转化为int和char型,若强行转换,会造成数据丢失

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值