java题目7:用户从键盘输入一个时间,判断其合理性,如果合理,就输出该时间,否则,输出“不合理的时间”。(例如:输入:18:1:2 输出18:01:02)(JudgeTheTime7)

每日小语

不要再将头埋在虚无缥缈的沙堆里;反之,还是逍遥自在地顶着那个能赋予大地意义的现实的头颅。                                                                                                          ——尼采

思考

输入,然后判断,最后还需要规范一下,然后输出,保证time大于等于0小于等于60即可

自己敲写

不会分割时间呜呜呜,然后找到了charat这个关键字,虽然只能读取一个但也方便我的敲写

//用户从键盘输入一个时间,判断其合理性,如果合理,就输出该时间,否则,输出“不合理的时间”。(例如:输入:18:1:2 输出18:01:02)(JudgeTheTime7)
import java.util.Scanner;
public class judgeTheTime7 
{
	@SuppressWarnings("resource")
	public static void main(String[] args)
	{
		//输入
		Scanner scanner = new Scanner(System.in);
		System.out.print("请输入时间(格式为时:分:秒)(如果为个位数字,前面加0):");
		String a = scanner.nextLine();
		//判断标准格式
		if(a.length()!=9)//length后面要加括号
		{
			System.out.println("不合理的时间");
			return;
		}
		//分割时间
		//如何把字符串转换为数字,判断第一个数是否大于6
		 char hour1 = a.charAt(0);
		 char minute1 = a.charAt(3);
		 char second1 = a.charAt(6);
		 char hour2 = a.charAt(1);
		 char minute2 = a.charAt(4);
		 char second2 = a.charAt(7);
		 //把char转换为数字
		 int hours1 = hour1 - '0';
		 int minutes1 = minute1 - '0';
		 int seconds1 = second1 - '0';
		 int hours2 = hour2 - '0';
		 int minutes2 = minute2 - '0';
		 int seconds2 = second2 - '0';
		 //只判断第一位数据是否大于6
			if(hours1>6||minutes1>6||seconds1>6)
			{
				System.out.println("不合理的时间");
			}
			else if(hours1==6&&hours2>0)//一定是双等于号!
			{
				System.out.println("不合理的时间");
			}
			else if(minutes1==6&&minutes2>0)//一定是双等于号!
			{
				System.out.println("不合理的时间");
			}
			else if(seconds1==6&&seconds2>0)//一定是双等于号!
			{
				System.out.println("不合理的时间");
			}
			else
			{
				System.out.println(a);
			}
	}
}

结果运行的时候就不对劲了。。。原来是第一个敲成9了。。应该是八。

我突然又发现了一个问题,那个小时应该是最大为2!

多次尝试后这个似乎没有问题了

//用户从键盘输入一个时间,判断其合理性,如果合理,就输出该时间,否则,输出“不合理的时间”。(例如:输入:18:1:2 输出18:01:02)(JudgeTheTime7)
import java.util.Scanner;
public class judgeTheTime7 
{
	@SuppressWarnings("resource")
	public static void main(String[] args)
	{
		//输入
		Scanner scanner = new Scanner(System.in);
		System.out.print("请输入时间(格式为时:分:秒)(采用24小时)(如果为个位数字,前面加0):");
		String a = scanner.nextLine();
		//判断标准格式
		if(a.length()!=8)//length后面要加括号
		{
			System.out.println("不合理的时间");
			return;
		}
		//分割时间
		//如何把字符串转换为数字,判断第一个数是否大于6
		 char hour1 = a.charAt(0);
		 char minute1 = a.charAt(3);
		 char second1 = a.charAt(6);
		 char hour2 = a.charAt(1);
		 char minute2 = a.charAt(4);
		 char second2 = a.charAt(7);
		 //把char转换为数字
		 int hours1 = hour1 - '0';
		 int minutes1 = minute1 - '0';
		 int seconds1 = second1 - '0';
		 int hours2 = hour2 - '0';
		 int minutes2 = minute2 - '0';
		 int seconds2 = second2 - '0';
		 //只判断第一位数据是否大于6
			if(hours1>2||minutes1>6||seconds1>6)
			{
				System.out.println("不合理的时间");
			}
			else if(hours1==2&&hours2>4)//一定是双等于号!
			{
				System.out.println("不合理的时间");
			}
			else if(hours1==2&&hours2==4&&minutes1!=0)//一定是双等于号!
			{
				System.out.println("不合理的时间");
			}
			else if(hours1==2&&hours2==4&&minutes2!=0)//一定是双等于号!
			{
				System.out.println("不合理的时间");
			}
			else if(hours1==2&&hours2==4&&seconds1!=0)//一定是双等于号!
			{
				System.out.println("不合理的时间");
			}
			else if(hours1==2&&hours2==4&&seconds2!=0)//一定是双等于号!
			{
				System.out.println("不合理的时间");
			}
			else if(minutes1==6&&minutes2>0)//一定是双等于号!
			{
				System.out.println("不合理的时间");
			}
			else if(seconds1==6&&seconds2>0)//一定是双等于号!
			{
				System.out.println("不合理的时间");
			}
			else
			{
				System.out.println(a);
			}
	}
}

 又发现问题了。。。

终极代码

//用户从键盘输入一个时间,判断其合理性,如果合理,就输出该时间,否则,输出“不合理的时间”。(例如:输入:18:1:2 输出18:01:02)(JudgeTheTime7)
import java.util.Scanner;
public class judgeTheTime7 
{
	@SuppressWarnings("resource")
	public static void main(String[] args)
	{
		//输入
		Scanner scanner = new Scanner(System.in);
		System.out.print("请输入时间(格式为时:分:秒)(采用24小时)(如果为个位数字,前面加0):");
		String a = scanner.nextLine();
		//判断标准格式
		if(a.length()!=8)//length后面要加括号
		{
			System.out.println("不合理的时间");
			return;
		}
		//分割时间
		//如何把字符串转换为数字,判断第一个数是否大于6
		 char hour1 = a.charAt(0);
		 char minute1 = a.charAt(3);
		 char second1 = a.charAt(6);
		 char hour2 = a.charAt(1);
		 char minute2 = a.charAt(4);
		 char second2 = a.charAt(7);
		 //把char转换为数字
		 int hours1 = hour1 - '0';
		 int minutes1 = minute1 - '0';
		 int seconds1 = second1 - '0';
		 int hours2 = hour2 - '0';
		 int minutes2 = minute2 - '0';
		 int seconds2 = second2 - '0';
		 //只判断第一位数据是否大于6
			if(hours1>2||minutes1>5||seconds1>5)//是5不是6
			{
				System.out.println("不合理的时间");
			}
			else if(hours1==2&&hours2>4)//一定是双等于号!
			{
				System.out.println("不合理的时间");
			}
			else if(hours1==2&&hours2==4&&minutes1!=0)//一定是双等于号!
			{
				System.out.println("不合理的时间");
			}
			else if(hours1==2&&hours2==4&&minutes2!=0)//一定是双等于号!
			{
				System.out.println("不合理的时间");
			}
			else if(hours1==2&&hours2==4&&seconds1!=0)//一定是双等于号!
			{
				System.out.println("不合理的时间");
			}
			else if(hours1==2&&hours2==4&&seconds2!=0)//一定是双等于号!
			{
				System.out.println("不合理的时间");
			}
			else if(minutes1==6&&minutes2>0)//一定是双等于号!
			{
				System.out.println("不合理的时间");
			}
			else if(seconds1==6&&seconds2>0)//一定是双等于号!
			{
				System.out.println("不合理的时间");
			}
			else
			{
				System.out.println(a);
			}
	}
}

不知道还有没有问题,感觉好像没有了,撒花花~ 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值