Horbyn4zZ
Horbyn4zZ
采纳率72.7%
2017-06-23 07:50 阅读 1.8k
已采纳

求助java代码逻辑哪里错了

题目
图片说明

 import java.util.*;
public class Welcome {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner m=new Scanner(System.in);
        int month=m.nextInt();
        if(month<1&&month>12){
            System.out.println("请重新输入1~12之间的整数:");
            Scanner n=new Scanner(System.in);
            month=n.nextInt();
        }
        int date=0;
        switch(month){
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                date=31;
                break;
            case 2:
                date=28;
                break;
            case 4:
            case 6:
            case 9:
            case 11:
                date=30;
                break;
        }
        System.out.println(+month+"月份有"+date+"天");
    }
}

输出
图片说明

为什么不是按我的想法走阿,,第一个Scanner读取第一次输入的值——15,15赋值给m变量month,进入if分支,不是应该等我再输入一个数吗。。。怎么直接输出date为0了。所以我想问,哪里出错了,还有,如果要改要怎么改

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

17条回答 默认 最新

  • 已采纳
    u014034934 逗比123号 2017-06-23 08:03

    &&改为||就行,还有最好把if改为while,把if里面的scanner哪行去掉

    点赞 评论 复制链接分享
  • lzl_Avery lzl_Avery 2017-06-23 09:10

    这样写会好很多
    图片说明

    点赞 1 评论 复制链接分享
  • github_38806262 github_38806262 2017-06-23 08:00

    你把15代入你那个判断,就成了false&&true,结果false,当然不走if里边了,把&&改成||就行了

    点赞 评论 复制链接分享
  • LZY_1993 早晨阳光一般暖 2017-06-23 08:01

    你的if判断写错了.纠正:if(month12){}

    点赞 评论 复制链接分享
  • sinat_38913556 sinat_38913556 2017-06-23 08:01

    if改成while

    点赞 评论 复制链接分享
  • qq_34730277 南宫文凯 2017-06-23 08:06

    import java.util.*;
    public class Welcome {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner m=new Scanner(System.in);
        int month=m.nextInt();
        if(month<1||month>12){
            System.out.println("请重新输入1~12之间的整数:");
            Scanner n=new Scanner(System.in);
            month=n.nextInt();
        }else{
        int date=0;
        switch(month){
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                date=31;
                break;
            case 2:
                date=28;
                break;
            case 4:
            case 6:
            case 9:
            case 11:
                date=30;
                break;
        }
                }
        System.out.println(+month+"月份有"+date+"天");
    }
    

    }

    点赞 评论 复制链接分享
  • weixin_38373461 低调d妖孽 2017-06-23 08:14

    if(month12){
    System.out.println("请重新输入1~12之间的整数:");
    Scanner n=new Scanner(System.in);
    month=n.nextInt();
    }
    改成:
    while(month12){
    System.out.println("请重新输入1~12之间的整数:");
    Scanner n=new Scanner(System.in);
    month=n.nextInt();
    }

    点赞 评论 复制链接分享
  • wal1314520 wal1314520 2017-06-23 08:28

    我按照你的意思,把你的代码稍微做了一点修改,你看看是不是你想要的效果

     public class Welcome {
    
        public static void main(String[] args) {
            System.out.println("请输入月份:");
            showMonth();
        }
    
        public static void showMonth() {
    
            Scanner m = new Scanner(System.in);
            int month = m.nextInt();
    
            int date = 0;
            switch (month) {
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                date = 31;
                System.out.println(+month + "月份有" + date + "天");
                break;
            case 2:
                date = 28;
                System.out.println(+month + "月份有" + date + "天");
                break;
            case 4:
            case 6:
            case 9:
            case 11:
                date = 30;
                System.out.println(+month + "月份有" + date + "天");
                break;
            default:
                System.out.println("输入月份有误,请重新输入1~12之间的整数:");
                showMonth();
                break;
            }
    
        }
    }
    

    图片说明

    点赞 评论 复制链接分享
  • liujian8654562 安卓工匠 2017-06-23 08:44
     //我给你重构了一下,代码整洁优美,易读,便于维护,还用到了java的封装思想
    package com.lj.test.other;
    
    import java.util.*;
    public class Welcome {
    
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    Scanner m=new Scanner(System.in);
    int month = -1;
    String message = "输入您要查询的月份:";
    while(month12){ 
    month = askForScanner(message,m);
    message = "请重新输入1~12之间的整数:";
    }
    int date=0;
    switch(month){
    case 2:
    date=28;
    break;
    case 4:
    case 6:
    case 9:
    case 11:
    date=30;
    break;
    default:
    date=31;
    
       }
       System.out.println(+month+"月份有"+date+"天");
    }
    
    private static int askForScanner(String message, Scanner m) {
        // TODO Auto-generated method stub
    
        System.out.println(message);
        return m.nextInt();
    }
    }
    
    点赞 评论 复制链接分享
  • u012844098 老夫撩发三千尺 2017-06-23 08:45

    import java.util.Scanner;

    public class T {

    static void getMessage(int month){
        int date=0;
        switch(month){
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:
            date=31;
            break;
        case 2:
            date=28;
            break;
        case 4:
        case 6:
        case 9:
        case 11:
            date=30;
            break;
        }
        System.out.println(+month+"月份有"+date+"天");
    }
    
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int month = 0;
        while(true){
            month = scanner.nextInt();
            if (month < 1 || month>12) {
                System.out.println("请重新输入1~12之间的整数:");
            }else{
                getMessage(month);
            }
        }
    }
    

    }

    点赞 评论 复制链接分享
  • lzl_Avery lzl_Avery 2017-06-23 09:07

    感觉你代码太繁杂了 个人觉得下面这种写法好很多
    package test;

    import java.util.Scanner;

    /**

    • @author:Avery
    • @description:
    • @date:2017年6月23日 */ public class Test { public static void main(String[] args) { Scanner scan=new Scanner(System.in); int[] month={31,28,31,30,31,30,31,31,30,31,30,31}; int m; do{ System.out.println("请输入月份(1~12):"); m=scan.nextInt(); }while(m12); System.out.println(month[m-1]); } }
    点赞 评论 复制链接分享
  • CB_dendi CB_dendi 2017-06-23 09:30

    逻辑运算符没法搞清楚,if中的条件永远可不可能成立

    点赞 评论 复制链接分享
  • lzl_Avery lzl_Avery 2017-06-23 09:52

    switch一般很少用它,感觉上用switch写的代码很low 去看源码 很多东西它都是用数组来实现都不会用switch来实现

    点赞 评论 复制链接分享
  • Horbyn4zZ Horbyn4zZ 2017-06-23 14:07

    谢谢大家,把逻辑与改成逻辑或就可以了,谢谢大家

    点赞 评论 复制链接分享
  • whj707216853 敲代码去 2017-06-23 14:58

    楼主帮我看下我这个题吧,就是二进制的加法问题,
    Description
    完成两个8位二进制数累加运算。如果最高位有进位,则加入最后一位。
    Input
    输入两个8位二进制数
    Output
    输出二进制数累加和。
    Sample Input
    10001011 01111100
    Sample Output
    00001000

    点赞 评论 复制链接分享
  • lzl_Avery lzl_Avery 2017-06-24 18:25

    步入计算机的小萌新  给的例子不对 10001011 01111100 加后 100000111 取低8位得结果00000111

    点赞 评论 复制链接分享
  • lzl_Avery lzl_Avery 2017-06-24 18:29

    图片说明

    点赞 评论 复制链接分享

相关推荐