如果声明验证

时间:2016-12-08 13:04:40

标签: java validation

尝试编写一个接受字符串并根据两个条件验证的简单Java程序。

如果单词短于4个字母,则要求用户重新输入一个单词,直到它是四个字母..

一旦该标准为真,就会根据字母对其进行评估。如果四个字母单词的第一个字母是D,那么它会打印一条愚蠢的消息" D被发现"如果没有"没有找到D"

到目前为止,我所工作的是对四个字母的验证。它检查它是四个字母,如果它不是它一直询问,直到它得到一个四个字母的单词。

之后当我输入四个字母的单词时,我无法在下一个单词上验证它是否检查它是否大于4个字母,然后检查它是否以D开头。

import java.util.Scanner;

公共类POD1

{

private static Sc​​anner scan = new Scanner(System.in);

private static String word;
public static void main(String [] args)
{
    System.out.println("Please enter a 4 Letter word");
    word = scan.next();

    if(word.length() <4) 
    {    
        System.out.println("Word is to short ");
        System.out.println("Plese re-enter");
        word = scan.next();
    }

    if(word.length() > 4)
    {
        if(word.charAt(1) == 'd')      
        {
            System.out.println("Big d"); 
        } else

        if( word.charAt(1) !='d')
        {
            System.out.println("No big d");
        }
    } 
}

}

更新

代码现在确实超过了4个字母的单词,但即使单词以d开头,它也不会打印出大的d,即使它以d开头

2 个答案:

答案 0 :(得分:4)

您应该拥有以下内容以包含4个字母

if(word.length() >= 4)

您正在扫描并获取输入,直到word.length()&lt; 4。所以当长度为4时,循环就会中断。

因此,它不会输入下一个if语句。

更好的实施方法是使用 else 子句

    if(word.length() <4) {  

        System.out.println("Word is to short ");
        System.out.println("Plese re-enter");
        word = scan.next();

    } else {

        if(word.charAt(0) == 'D')      
        {
            System.out.println("Big D"); 
        } else

        if( word.charAt(0) !='D')
        {
            System.out.println("No big D");
        }
    } 
}

另外,如果您正在寻找&#39; 而不是&#39; >&#34; Big D&#34; 。

此外,字符串中第一个字符的索引为0.因此,您应该使用 word.charAt(0) == 'D' ,而不是在您的代码中使用索引1。索引1将返回第二个字符。

答案 1 :(得分:1)

你检查这个单词是否短于4个字母,这个单词是否长于4个字母。

您的代码中绝对没有包含4个字母的单词。

if(word.length() >= 4)

应该使用。