Как заставить мой код проверить, что пользователь ввел алфавитный символ? [Джава] - PullRequest
1 голос
/ 17 февраля 2010

Обновление : код работает сейчас. Спасибо за помощь, ребята.


Это часть кода, с которой у меня проблемы

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 ]

1 голос
/ 17 февраля 2010

Вы проверяете, является ли int буквой или нет:

 Character.isLetter(amount)

Если это int, например, 65, этот метод вернет true, потому что в коде ascii число 65 представляет букву a

Это, вероятно, источник ваших проблем.

Вы можете безопасно удалить эту проверку, потому что, если после звонка на Integer.parseInt вы можете быть уверены, что amount - это номер (в противном случае он перейдет в раздел catch( NumberFormatException ) ниже как Вы, возможно, уже заметили.

0 голосов
/ 17 февраля 2010

Проверка amount < 0 не делает ничего полезного, если только вы не проверяете целочисленные значения меньше 0. Integer.parseInt() возвращает прочитанное целое число в виде строки. Он выдает NumberFormatException, если его аргумент не содержит разбираемого целого числа.

Я бы назвал другой метод, если ваша цель просто выяснить, есть ли в тексте кнопки буквы. Кроме того, я не уверен, почему вы звоните 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 для целых чисел , Мечта в коде

0 голосов
/ 17 февраля 2010

Ну, я думаю, что вы уже проверяете, является ли сумма целым числом:

Integer.parseInt(theInputPQ.getText());

и блок try-catch. не нужно делать

Character.isLetter(amount)
0 голосов
/ 17 февраля 2010

Является ли amount int переменной? если это так, как это может быть буква (Character)? если нет int, то как это можно сравнить с помощью < 0? Это может быть либо символ, либо целое число, но не оба выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...