Вернуть первую цифру целого числа - PullRequest
24 голосов
/ 12 января 2010

Как в Java вы возвращаете первую цифру целого числа?

Ответы [ 23 ]

1 голос
/ 12 января 2010
int main(void) {
  int num = 3421;

  while (num*num + 10 - num*(1 + num) <= 0) {
    num *= (num - 0.9*num)/num;
  }

  std::cout << num << std::endl;
}
1 голос
/ 11 ноября 2012

Глядя на предоставленный код, кажется, что все усложняется, вот простое решение ...

int number = 4085;
int firstDigit = number;
while (firstDigit > 9)
{
      firstDigit = firstDigit / 10;
}
System.out.println("The First Digit is " + firstDigit);
1 голос
/ 01 сентября 2017

Предположим, что число типа int

следовательно,

int number = 352
// Change the int into String format
String numberString = Integer.toString(number);
// We can know the first digit of that String with substring method directly
Integer.parseInt(numberString.substring(0,1));

или другой способ - изменить строку на char и получить числовое значение из char

, например

int number = 352;
String numberString = Integer.toString(number);
Character.getNumericValue(String.valueOf(target).charAt(0)); 
// 0 means the first digit of the number
0 голосов
/ 03 октября 2018

Я думаю, что проще сделать:

int firstDigit = i-(i/10)*10 // i is an integer or long value, positive or negative.
0 голосов
/ 11 мая 2018

Чтобы разделить цифры целого числа слева направо, я использую 2 разных метода, первый для подсчета количества цифр, из которых состоит целое число, а затем я разделил их слева направо, разделив целое число на 10, поднятое до сила числа цифр минус 1.

//method to separate digits of an integer from left to right
private static void separateDigits(int num){
    int numOfDigits = countNumberOfDigits(num);
    for (int numOfZeros = numOfDigits-1; numOfZeros >= 0 ; --numOfZeros){
        int divisor = (int) Math.pow(10, numOfZeros);
        System.out.print( Math.abs(num) / divisor + " // " );
        num %= divisor;
    }
}

//method to count number of digits
private static int countNumberOfDigits(int num){
    int numOfDigits=0;
    //using absolute value of num allows method to work even with negative integers
    while(Math.abs(num) > 0){ 
        num = num / 10;
        numOfDigits++; //this counts the number of times the "while" loops
    }
    return numOfDigits;
}

Не использовать массивы или рекурсивные методы, просто деление на "/" и "%".

Вызов метода:

public static void main(String args[]) {

separateDigits( -123456789 );

}

выходы: 1 // 2 // 3 // 4 // 5 // 6 // 7 // 8 // 9 //

0 голосов
/ 26 января 2018
public static void firstDigit(int number){      
    while(number != 0){
        if (number < 10){
            System.out.println("The first digit is " + number);
        }
            number = number/10;

        }
    }

Когда вы звоните, вы можете использовать Maths.abs, чтобы он работал для отрицательного номера:

firstDigit(Math.abs(9584578)); 

Возвращает 9

0 голосов
/ 17 января 2018

Вот уменьшенная версия для получения цифр всех позиций, она работает с отрицательным значением (не десятичным).

int number = -23456;

int length = (int) Math.log10(Math.abs(number)) + 1; //This gets the length of the number of digits used
//Math.abs to change negative int to positive

System.out.println("Digit at pos " + 1 + " is :- " + (int)(Math.abs(number)/Math.pow(10,(length-1))));

for (int i = 2; i <= length; i++){
    System.out.println("Digit at pos " + i + " is :- " + (int)(Math.abs(number)/Math.pow(10,(length-i))%10));
}
0 голосов
/ 11 января 2018

Этот способ работал для меня просто отлично, но он включает преобразование из int в строку и обратно в int.

Integer.parseInt(String.valueOf(x).substring(0,1));
0 голосов
/ 14 декабря 2016
int firstNumber(int x){
     int firstN = x;
     while(firstN > 9){
          firstN = (firstN - (firstN%10))/10;
     }
     return firstN;   
 }
0 голосов
/ 09 октября 2016
//Try this one.
Scanner input = new Scanner(System.in);
System.out.println("enter first 9 digits: ");
String x = input.nextLine();
String x1 = x.substring(0,1);
int d1 = Integer.parseInt(x1);
System.out.println(d1);
// the substring gives the position of extraction. method dont seem to work for letters though
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...