Разбор строки в целое число - PullRequest
0 голосов
/ 07 ноября 2018

Так что моя самая большая проблема заключается в том, что я не могу вспомнить, как разобрать строку в int, чтобы я мог идиотом проверить мой код. Моя цель здесь - выяснить, вводит ли пользователь слово вместо целого, и тогда я могу объяснить им, что такое целое число. Может кто-нибудь, пожалуйста, помогите? Мне просто нужен простой список команд синтаксического анализа, чтобы я мог изучить их для использования в будущем, как только появится простой список, я думаю, что я смогу выяснить все остальные оттуда.

import java.util.Scanner;
import java.util.*;
public class SelfTestNumberNine
{
   public static void main(String[] args)
   {
   boolean test = false;
   int num = 0;
   int sum = 0;
   int count = 0;
   int pos = 0;
   int neg = 0;
   Scanner in = new Scanner(System.in);
   while(!test)
   {
      num = 0;
      System.out.print("Enter in an Integer Value: ");
      String letta = in.next();
      if(??parsing stuff goes here!!)
      {
         num = in.nextInt();
         count++;
         if(num > 0)
         {
            pos++;
            sum = sum + num;
         }
         else if(num < 0)
         {
            neg++;
            sum = num + sum;
         }
         else
         {
             test = true;
         }
      }
      else
      {
         System.out.println("An Integer is a number that is positive or 
         negative,\nand does not include a decimal point.");
      }
   }//end while

   System.out.println("Total:   " + sum);
   double avg = sum / count;
   System.out.println("Average: " + avg);
  }//end main
}//end class

По сути, программа просит пользователя ввести целые числа, подсчитывает количество положительных и отрицательных значений и выводит итоговое и среднее значение (игнорируя 0). Программа заканчивается, когда пользователь вводит 0.

P.S. Спасибо за ваше время!! ]: -)

Ответы [ 3 ]

0 голосов
/ 07 ноября 2018

Вы можете использовать логический метод и try-catch, чтобы проверить, можете ли вы разобрать строку в целое число.

public static boolean isInteger(String s) {
    try { 
        Integer.parseInt(s); 
    } catch(NumberFormatException e) { 
        return false; 
    } catch(NullPointerException e) {
        return false;
    }
    // only got here if we didn't return false
    return true;
}
0 голосов
/ 07 ноября 2018

Если вы хотите убедиться, что пользователь ввел int, не вызывая исключения, если они этого не делают, вы можете использовать метод hasNextInt():

System.out.println("Enter an int (0) to quit");
//While the user has not entered a valid int
while (!input.hasNextInt()) {
    System.out.println("Please enter an integer: ");
    //Consume the bad input
    input.nextLine();
}

, который будет повторяться до тех пор, пока он не введетдействительный инт.Пример прогона (- обозначает ввод пользователя):

Enter an int (0 to quit)
-No
Please enter an integer: 
-Never!!
Please enter an integer: 
-Ok ok fine
Please enter an integer: 
-3
0 голосов
/ 07 ноября 2018

Вы можете сделать это двумя способами.

- Integer.parseInt()
- Integer.valueOf()

String myStr = "1";

int parsedInt = Integer.parseInt(myStr);
int valueOf = Integer.valueOf(myStr);

System.out.println("Parse Int: " + parsedInt);
System.out.println("Value Of: " + valueOf);

Примечание. Вы можете получить исключение, если входные данные не могут быть проанализированы. NumberFormatException.

...