夏秋的朝暮. 2023-03-12 10:55 采纳率: 90%
浏览 27
已结题

关于Java字符串的输入错误……

用字符串的方式输入2023/3/12,但显示如下:

img


请问是怎么回事啊……
代码如下:

package mypackage;

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner scanner = new Scanner(System.in);
        //以字符串的形式获取日期,之后再分离出年月日
        //例如获取字符串2023/3/12(中间无空格)
        String str = scanner.nextLine();
        int a = str.indexOf('/');//第一次出现“/”的下标数
        int b = str.indexOf('/',a);//第二次出现“/”的下标数
        String strYear = str.substring(0,a);//提取年份字符串
        String strMonth = str.substring(a+1,b);//提取月份字符串
        String strDay = str.substring(b+1);//提取日期字符串
        int year = Integer.parseInt(strYear);
        int month = Integer.parseInt(strMonth);
        int m,y;
        int day = Integer.parseInt(strDay);
        int h;
        //月份、年份对应数字:
        if(month >= 3)
        {
            m = month;
            y = year;
        }
        else if(month == 2) 
        {
            m = 14;
            y = year - 1;
        }
        else
        {
            m = 13;
            y = year - 1;
        }
        int i = (int)(26 * (m + 1) / 10);
        int j = (int)((y % 100) / 4);
        int k = (int)(y / 100);
        int l = (int)(k / 4);
        h = (day + i + (y % 100) + j + l+5 * k) % 7;
        switch (h)
        {
        case 0:
            System.out.println("Saturday");
            break;
        case 1:
            System.out.println("Sunday");
            break;
            
        case 2:
            System.out.println("Monday");
            break;
            
        case 3:
            System.out.println("Tuseday");
            break;
            
        case 4:
            System.out.println("Wednesday");
            break;
            
        case 5:
            System.out.println("Thursday");
            break;
            
        case 6:
            System.out.println("Friday");
            break;
        }
        scanner.close();
    }


}


  • 写回答

3条回答 默认 最新

  • Huazie 全栈领域优质创作者 2023-03-12 11:06
    关注
    • a 和 b 的值相同, 16行 截取字符串出错了

    img

    • 解决方法:
    int b = str.indexOf('/',a+1); // a 改成 a+1
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月12日
  • 已采纳回答 3月12日
  • 创建了问题 3月12日

悬赏问题

  • ¥15 运动想象脑电信号数据集.vhdr
  • ¥15 三因素重复测量数据R语句编写,不存在交互作用
  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目