Java: charAt конвертировать в int? - PullRequest
6 голосов
/ 13 апреля 2010

Я хотел бы ввести свой номер nirc, например. S1234567I и затем ставим 1234567 индивидуально как целое число как indiv1 как charAt(1), indiv2 как charAt(2), indiv как charAt(3) и т. Д. Однако, когда я использую код ниже, я не получается вывести хотя бы первый номер? Есть идеи?

  Scanner console = new Scanner(System.in);
  System.out.println("Enter your NRIC number: ");

  String nric = console.nextLine();

  int indiv1 = nric.charAt(1);
  System.out.println(indiv1);

Ответы [ 5 ]

18 голосов
/ 13 апреля 2010

Вы получите 49, 50, 51 и т. Д. - это кодовые точки Unicode для символов «1», «2», «3» и т. Д.

Если вы знаете , что это будут западные цифры, вы можете просто вычесть '0':

int indiv1 = nric.charAt(1) - '0';

Однако вы должны делать это только после того, как уже проверили в другом месте, что строка имеет правильный формат - в противном случае вы получите ложные данные - например, «A» в конечном итоге вернет 17 вместо ошибка.

Конечно, один из вариантов - взять значения, а затем проверить, что результаты находятся в диапазоне 0-9. Альтернативой является использование:

int indiv1 = Character.digit(nric.charAt(1), 10);

Возвращает -1, если символ не является подходящей цифрой.

Я не уверен, что этот последний подход будет охватывать незападные цифры - первый, конечно, не будет - но, похоже, это не будет проблемой в вашем случае.

2 голосов
/ 13 апреля 2010

Посмотрите на Character.getNumericValue (ch) .

0 голосов
/ 06 мая 2017

Я знаю, что вопрос о char к int, но об этом стоит упомянуть, потому что в char тоже есть отрицательный знак))

В JavaHungry вы должны записать отрицательные числа для целого числа если вы не хотите использовать персонажа.

Преобразование строки в целое число: псевдокод

   1.   Start number at 0

   2.   If the first character is '-'
                   Set the negative flag
                   Start scanning with the next character
          For each character in the string  
                   Multiply number by 10
                   Add( digit number - '0' ) to number
            If  negative flag set
                    Negate number
                    Return number

открытый класс StringtoInt {

public static void main (String args[])
{
    String  convertingString="123456";
    System.out.println("String Before Conversion :  "+ convertingString);
    int output=    stringToint( convertingString );
    System.out.println("");
    System.out.println("");
    System.out.println("int value as output "+ output);
    System.out.println("");
}




  public static int stringToint( String str ){
        int i = 0, number = 0;
        boolean isNegative = false;
        int len = str.length();
        if( str.charAt(0) == '-' ){
            isNegative = true;
            i = 1;
        }
        while( i < len ){
            number *= 10;
            number += ( str.charAt(i++) - '0' );
        }
        if( isNegative )
        number = -number;
        return number;
    }   
}
0 голосов
/ 13 апреля 2010
try {
   int indiv1 = Integer.parseInt ("" + nric.charAt(1));
   System.out.println(indiv1);
} catch (NumberFormatException npe) {
   handleException (npe);
}
0 голосов
/ 13 апреля 2010

int indiv1 = Integer.parseInt(nric.charAt(1));

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