尝试编写一个接受字符串并根据两个条件验证的简单Java程序。
如果单词短于4个字母,则要求用户重新输入一个单词,直到它是四个字母..
一旦该标准为真,就会根据字母对其进行评估。如果四个字母单词的第一个字母是D,那么它会打印一条愚蠢的消息" D被发现"如果没有"没有找到D"
到目前为止,我所工作的是对四个字母的验证。它检查它是四个字母,如果它不是它一直询问,直到它得到一个四个字母的单词。
之后当我输入四个字母的单词时,我无法在下一个单词上验证它是否检查它是否大于4个字母,然后检查它是否以D开头。
import java.util.Scanner;
公共类POD1
{
private static Scanner 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开头
答案 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)
应该使用。