我正在制作一个程序,要求用户输入格式为mm / dd / yyyy的月份 我必须确保斜线位于第3和第6位。 如果它的格式不正确,在位置3和6(根据说明,但这并不意味着它的实际2& 5),我必须打印"不正确的格式"到屏幕。到目前为止,这是我的代码。
public static void main(String[] args) {
Scanner kbd = new Scanner(System.in);
System.out.println("Enter a date (mm/dd/yyyy):");
String date = kbd.next();
String slash1 = date.substring(3,3);
String slash2 = date.substring(6,6);
int numofChar = date.length();
if (numofChar < 10)
{
System.out.println("Too few characters in the date");
}
if (numofChar > 10)
{
System.out.println("Too many characters in the date");
}
if (!(slash1.equals("/") || slash2.equals("/")))
{
System.out.println("incorrect format");
}
老实说,我可以让代码看起来更好,我一直在玩这个问题的一部分并且代码切换两个小时,这对我来说没有任何意义。我以不同的方式研究了这个问题,但没有提出正确的方法。
因此,如果它看起来很乱或完全偏离正轨,那可能就是原因。此外,我可能会混淆我所知道的一切,所以如果有更多错误,请帮忙!
如何声明一个变量,将变量存储在位置3和6;然后测试两者是否实际上都是斜线?
答案 0 :(得分:2)
您可以直接查看char
。无需使用substring
。
if (userInput.charAt(2).equals('/') && userInput.charAt(5).equals('/')) {}
但是,如果你想使用substring
,你应该知道它是如何工作的。
public String substring(int beginIndex)
返回一个新字符串,该字符串是此字符串的子字符串。子字符串以指定索引处的字符开头,并延伸到此字符串的末尾。
public String substring(int beginIndex, int endIndex)
返回一个新字符串,该字符串是此字符串的子字符串。子字符串从指定的beginIndex开始,并扩展到索引endIndex - 1处的字符。因此子字符串的长度为endIndex-beginIndex。
所以还有另一个评论:
String slash1 = userInput.substring(2,2);
String slash2 = userInput.substring(5,5);
if (slash1.equals("/") && slash2.equals("/")){}
小心! String
由双引号""
中的字符表示,字符由单引号char
中的单''
个字符表示。
另一件可能对您有帮助的事情是,如果您知道某件事是String
,请将其声明为String
。当您声明它是Object
时,会丢失数据。如果它是String
,则必须是Object
!