如何让我的代码检查用户是否输入了字母字符? 【JAVA]

时间:2010-02-17 14:00:02

标签: java

更新:代码现在正常运行。谢谢你的帮助。


这是我遇到问题的代码的一部分

if ((amount < 0) || (Character.isLetter(amount)))

任何人都知道我做错了什么?这是我的一段代码:

try
      {
       if ( theStock.exists( pn ) )        // Button CHECK
       {
           thePicture.clear();                       
           if ( actionIs.equals( Name.ADD ) ) {
               try 
               {
                   amount = Integer.parseInt(theInputPQ.getText());      // Checks that
                   if ((amount < 0) || (Character.isLetter(amount))) {   // number has been
                       theOutput.setText("Please enter sufficient No."); // input
                    }
                    else {
                        theStock.addStock(pn, amount);
                        Product pr = theStock.getDetails( pn ); // Add to
                        theAction.setText(                      // stock of
                        pr.getDescription() + " : " +           // item
                        theMoney.format(pr.getPrice()) + 
                        " (" + pr.getQuantity() + ")" );
                    }                       
                }

                catch (NumberFormatException e) {
                    theOutput.setText("Please enter sufficient No.");

                    Product pr = theStock.getDetails( pn );              
                    theAction.setText(                    
                    pr.getDescription() + " : " +       
                    theMoney.format(pr.getPrice()) +    
                    " (" + pr.getQuantity() + ")" );

                    if ( actionIs.equals( Name.ADD ) ) {
                    } 
                }
            } else {                                   // F
                theAction.setText(                    //  Inform Unknown
                "Unknown product number " + pn );    //  product number
            }
        }

4 个答案:

答案 0 :(得分:1)

您正在检查int是否是一封信:

 Character.isLetter(amount)

如果该int是例如65该方法将返回true,因为在ascii代码中,数字65代表字母a

这可能是您问题的根源。

您可以安全地删除该验证,因为,如果在致电Integer.parseInt之后您可能确定amount 是一个数字(否则它会转到{您可能已经注意到以下{1}}部分。

答案 1 :(得分:0)

amountint变量吗?如果是,它是如何成为一封信(Character)?如果不是int,那么如何使用< 0进行比较?它可以是或字符或整数,而不是上述两者。

答案 2 :(得分:0)

嗯,我认为你已经通过以下方式检查金额是否为int

Integer.parseInt(theInputPQ.getText());

和try-catch块。

Character.isLetter(amount)

答案 3 :(得分:0)

amount < 0检查没有做任何有用的事情,除非您检查小于0的整数值。Integer.parseInt()返回它读取的整数,作为字符串。如果其参数不包含可解析的整数,则抛出NumberFormatException

如果你的目标只是弄清楚按钮的文字中是否有字母,我会调用另一种方法。另外,我不确定你为什么要在String的文本上调用isLetter()。这是我看到的一个逐个字符的例子:

String str = theInputPQ.getText(); // I assume this is a String
for(int i=0; i < str.length(); i++)
{
        if(Character.isDigit(str.charAt(i)))
           System.out.println("It's a digit");
        if(Character.isLetter(str.charAt(i)))
           System.out.println("It's a letter");
}

为了良好的编码实践,如果你添加这个代码,那么它应该是一个单独的私有方法。

来源:Java API for IntegerDream in Code