在java中输入有效的时间格式
我目前是一名软件测试人员。我有一个场景来测试时间格式 我想用java程序输入一个有效的时间格式。我很累,但找不到一个好答案 我想以正确的格式输入时间(hh:mm:ss)。它接受格式HH:MM:SS指定的时间。时间应以冒号和excpet冒号分隔,其他字符如/,-不应打印无效。 小时从0到23,分钟从0到59,秒应该从0到59 并且只接受数字,若我输入字符,它将打印无效的时间格式 这两个值20:62:00和20:80:00也是无效的,因为分钟应该在0到59之间 这是我试过的:在java中输入有效的时间格式,java,Java,我目前是一名软件测试人员。我有一个场景来测试时间格式 我想用java程序输入一个有效的时间格式。我很累,但找不到一个好答案 我想以正确的格式输入时间(hh:mm:ss)。它接受格式HH:MM:SS指定的时间。时间应以冒号和excpet冒号分隔,其他字符如/,-不应打印无效。 小时从0到23,分钟从0到59,秒应该从0到59 并且只接受数字,若我输入字符,它将打印无效的时间格式 这两个值20:62:00和20:80:00也是无效的,因为分钟应该在0到59之间 这是我试过的: import java
import java.util.Scanner;
public class AlarmTime {
public static void main(String args[]) {
Scanner s = new Scanner(System.in);
System.out.println("Enter the number of test case");
int a = s.nextInt();
System.out.println("Enter the HH");
int h = s.nextInt();
System.out.println("Enter the MM");
int m = s.nextInt();
System.out.println("Enter the SS");
int ss = s.nextInt();
System.out.println("Time is" + h + ":" + m + ":" + ss);
if (h >= 0 && h <= 23 && m >= 0 && m <= 59 && ss >= 0 && ss <= 59) {
System.out.println("Valid test case" + h + ":" + m + ":" + ss);
} else {
System.out.println("invalid test case");
}
}
}
在这里,我将测试用例写成4,然后再次说明如何编写下一个测试用例2。我还需要为输入字符等无效输入编写一个测试用例。错误就在这里,它必须是
和条件,而不是或。
小时必须小于24,分钟必须小于60,秒必须小于60
if(0<=h<=23 && 0<=m<=59 && 0<=ss<=59){
System.out.println("Valid test case"+h+":"+m+":"+ss);
}
else
{
System.out.println("invalid test case");
}
如果(0错误在这里,则它必须是和
条件,而不是或
。
小时必须小于24,分钟必须小于60,秒必须小于60
if(0<=h<=23 && 0<=m<=59 && 0<=ss<=59){
System.out.println("Valid test case"+h+":"+m+":"+ss);
}
else
{
System.out.println("invalid test case");
}
if(0您应该只接受hh:mm:ss
而不是将其作为3个变量,然后通过尝试将其解析为日期来验证它
以下是如何:
System.out.println("Enter date as HH:MM:SS");
String a = s.nextString();
try {
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy hh:mm:ss");
Date parsedDate = dateFormat.parse("12-12-2017 "+yourString);
// Parsing success, means a valid test case.
System.out.println("Valid test case : "+a);
} catch(Exception e) {
// Parsing failed, so the case is invalid!
System.out.println("Invalid");
}
您应该只接受hh:mm:ss
,而不是将其作为3个变量,然后通过尝试将其解析为日期来验证它
以下是如何:
System.out.println("Enter date as HH:MM:SS");
String a = s.nextString();
try {
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy hh:mm:ss");
Date parsedDate = dateFormat.parse("12-12-2017 "+yourString);
// Parsing success, means a valid test case.
System.out.println("Valid test case : "+a);
} catch(Exception e) {
// Parsing failed, so the case is invalid!
System.out.println("Invalid");
}
应该是:
if(0<=h && h<=23)
应该是:
if(0<=h && h<=23)
使用simpleDataFormat
并将其lenient
属性设置为false
。然后检查parse
方法是否返回null
(这将指示无效日期)。请参见此处的API文档:使用SimpleDataFormat
,并将其lenient
属性设置为false
。然后检查parse
方法是否返回null
(这将指示无效日期)。请参阅此处的API文档:其他答案清楚地指出,您的条件是错误的。如果(小时其他答案清楚地指出,您的条件是错误的,那么去如果(小时neetha)是错误的
您的代码不正确。验证必须如下所示:
if (h >= 0 && h <= 23 && m >= 0 && m <= 59 && ss >= 0 && ss <= 59) {
System.out.println("Valid test case" + h + ":" + m + ":" + ss);
}
如果时间无效,此代码将抛出java.time.DateTimeException
neetha
您的代码不正确。验证必须如下所示:
if (h >= 0 && h <= 23 && m >= 0 && m <= 59 && ss >= 0 && ss <= 59) {
System.out.println("Valid test case" + h + ":" + m + ":" + ss);
}
如果时间无效,此代码将抛出一个java.time.DateTimeException
我有一个问题。为什么不使用一些测试套件来自动化您的工作?例如Junit或其他。您正在使用|124;
(即或)进行测试,您想要&
(即和)。如果(0我有一个问题。你为什么不使用一些测试套件来自动化你的工作?比如Junit之类的。你正在用|
(哪个是或)进行测试,你想要&&
(哪个是和)。如果(0
if (h >= 0 && h <= 23 && m >= 0 && m <= 59 && ss >= 0 && ss <= 59) {
System.out.println("Valid test case" + h + ":" + m + ":" + ss);
}
LocalTime time = LocalTime.of(h, m, ss);