断言用户输入是大写字母

时间:2011-09-17 09:21:16

标签: java input assert

我必须编写一个用户输入字符串的程序。第一个和第二个字符必须是大写字母,其余字符必须是数字。如果用户没有正确输入,程序应该生成一个消息,通知输入错误。

我知道我可以通过编写一个循环来扫描用户输入中的每个符号并查找错误。

所以说我已定义:

char sign;

我使用带有charAt(循环编号)的循环

我能否以比写作更简单的方式扫描大写字母,比如说:

if (sign != 'A' || sign != 'B' || sign !='C' || sign != 'D' . . . .)  

所有字母?这是编写程序的一种单调乏味的方式。因此,如果有人知道任何用于断言输入的快捷方式/方法是大写字母,我将非常感激!

4 个答案:

答案 0 :(得分:2)

ch=(char) inputstream.read();
if(Character.isUpperCase(ch)) {
    /* DO SOMETHING */
}
else {
    /* DO SOMETHING ELSE*/
}

答案 1 :(得分:1)

这样的事情:

if(sign >= 'A' && sign <= 'Z')

如果sign是大写字母,则为真。

答案 2 :(得分:1)

您可以在整个字符串上使用regular expression,而不是逐个字符地进行测试。

if (!userString.matches("^[A-Z]{2}\d+$") {
    // Generate a warning...
}

这个正则表达式的作用是强制字符串的开头为两个大写字母,然后至少跟一个数字到字符串的末尾。

如果您想按照建议进行循环代码,请使用Character.isUppercase(char c) method in the Java libraries来测试字母是否为大写。同样,您可以使用Character.isDigit(char c)来测试数字。

答案 3 :(得分:0)

if Sign = Uppercase(Sign) then
  DoSomethingIfItIsUppercase;

// Say Sign was "j", the Uppercase(); will make it "J", and then they dont match.
// But if Sign was "J", Uppercase(); would still make it "J", and they would match.

那会有用吗?

注意:这是Delphi,因为您没有指定使用的语言;)

这是一个Java示例(未经测试!):

  char Char1 = yourinput.charAt(0);
  char Char2 = yourinput.charAt(1);
  // Those were the first to characters
  // Now check if they are uppercase
  if(Char1==Character.toUpperCase(Char1) && Char2==Character.toUpperCase(Char2))
  {
    // Do something if both are uppercase
  }