Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中输入有效的时间格式_Java - Fatal编程技术网

在java中输入有效的时间格式

在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

我目前是一名软件测试人员。我有一个场景来测试时间格式

我想用java程序输入一个有效的时间格式。我很累,但找不到一个好答案

我想以正确的格式输入时间(hh:mm:ss)。它接受格式HH:MM:SS指定的时间。时间应以冒号和excpet冒号分隔,其他字符如/,-不应打印无效。 小时从0到23,分钟从0到59,秒应该从0到59

并且只接受数字,若我输入字符,它将打印无效的时间格式

这两个值20:62:00和20:80:00也是无效的,因为分钟应该在0到59之间

这是我试过的:

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);