声明一个变量来存储String的第3个和第6个字符,并测试它们是否为斜杠

时间:2016-09-28 09:26:13

标签: java

我正在制作一个程序,要求用户输入格式为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;然后测试两者是否实际上都是斜线?

1 个答案:

答案 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