我是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);
}
}
谢谢
答案 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()"行为奇怪。这是一种你不必遵循的个人风格。
那就是它,我希望我帮助过!祝你的计划和编码事业顺利。