当前位置: 代码迷 >> java >> 在24小时和12小时之间转换
  详细解决方案

在24小时和12小时之间转换

热度:86   发布时间:2023-08-02 11:22:48.0

我是Java编程的初学者,我试图使用if语句,仅用于for循环和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);


   }
 }

谢谢

为什么要在if语句中测试“ m”。 AM和PM都不会有那个“ m”。 我会说在if语句中测试“ a”或“ p”,然后在else语句中处理相反的情况。

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

另外,我假设您希望用户能够以可变格式输入。 例如9:00 PM或09:00 PM。 为了处理这些情况,我将检查“:”所在的索引。 为此,您可以使用字符串类的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
}

}

是的,您的代码非常不正确。 我记得那些天,我也是初学者学习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”的首字母。

-最后,我将“ nextLine()”更改为“ next()”,因为我发现“ nextLine()”的行为异常。 这是您不必遵循的个人风格。

就是这样,希望能对您有所帮助! 祝您的程序和编码生涯顺利。