转换时间为24小时至12小时

时间:2015-07-27 19:18:50

标签: java time

我是Java编程的初学者,我正在尝试使用if语句,仅针对循环和while循环在12小时和24小时之间进行转换。请参考下面的我的尝试。到目前为止,我试过从12小时转换到24小时。您可能会发现代码可笑不正确,但我无法弄清楚我哪里出错了。请帮我解释一下代码..我会很感激的!

尝试:

import java.util.Scanner;
public class TimeConverter {
  public static void main(String[] args){

    Scanner s = new Scanner(System.in);
    System.out.println("Enter a time ([h]h:mm [am|pm]):");
    String input = s.nextLine();
    if(input.charAt(input.length()-1)== "m")
       String x = input.substring(0,2);
       int TwentyFour = int x + 12;
       System.out.println(TwentyFour);


   }
 }

谢谢

2 个答案:

答案 0 :(得分:0)

为什么要测试" m"在if语句中。不是上午和下午两人都有这个" m"。我会说测试" a"或" p"在if语句中然后在else语句中处理相反的内容。

另一件事是用户可以输入大写或小写字母,因此您也需要处理它。一种简单的方法是先存储要测试的字母,然后使用String类的toUpperCase方法。

另外,我假设您希望用户能够以可变格式输入。例如。晚上9点或晚上9点。为了处理这些情况,我会检查":"在。为此,您可以使用字符串类的indexOf()方法。

这将帮助您完成第一个场景,但您可以实现第二个场景。

import java.util.Scanner;
public class TimeConverter {
public static void main(String[] args){

Scanner s = new Scanner(System.in);
System.out.println("Enter a time ([h]h:mm [am|pm]):");
String input = s.nextLine();

String whichHalf;
whichHalf = input.charAt(input.length()-1);
whichHalf.toUpperCase();
if(whichHalf== "P")//it's PM
   String x = input.substring(0,2);
   int TwentyFour = int x + 12;
   System.out.println(TwentyFour);
}
else //it's AM
{
    //don't convert just print
}

}

答案 1 :(得分:0)

是的,您的代码非常不正确。我记得当时我也是初学者学习Java的那些日子。

以下是该程序的更正版本:

import java.util.Scanner;
public class TimeConverter {
    public static void main(String[] args){

        Scanner s = new Scanner(System.in);
        System.out.println("Enter a time ([h]h:mm [am|pm]):");
        String input = s.next();

        char whichHalf = input.charAt(input.length() - 2);
        whichHalf = whichHalf.toUpperCase();

        if(whichHalf == 'P'){
            String x = input.substring(0, 2);
            double twentyFour = Double.parseDouble(x) + 12;
            System.out.println(twentyFour);
        }
    }
}

以下是您可能需要注意的陷阱:

- 您无法将String直接转换为int。您必须使用Double.parseDouble()

之类的方法

- charAt()方法返回一个字符,而不是一个字符串,因此无法将其与" M"进行比较,但可以将其与“' M' (注意撇号而不是引号,表示char而不是String)。你还检查了错误的信件。你应该检查" AM"的第一个字母。或" PM"。

- 最后,我改变了#34; nextLine()"到" next()"因为我发现" nextLine()"行为奇怪。这是一种你不必遵循的个人风格。

那就是它,我希望我帮助过!祝你的计划和编码事业顺利。