2016-01-23 3 views
0

Мне нужно написать программу для получения номера от пользователя, используя метод user = defined, чтобы отменить номер, а затем вернуть число как целое число. Ниже я до сих пор. Я пытаюсь понять, могу ли я взять каждую отдельную цифру из массива и как-то объединить их в целое число. Нужно ли комбинировать их в виде строки, а затем преобразовывать ее в целое? или существует ли более простой способ сделать это?преобразование массива целых чисел в одно длинное целое

import java.util.*; 

public class UserDefinedMethods 
{ 
    static Scanner keyboard = new Scanner(System.in); 

    public static int reverseDigits(int num) 
    { 
    int reverse[]; 
    int i = 0; 
    int out = 0; 
    do 
    { 
     if (num < 0) 
     num = (num * -1); 

     reverse[i] = num % 10; 
     num = num/10; 
     i++; 
     } 
    while (num > 0); 
     out = 
    return reverse; //HERE IS MY PROBLEM I BELEIVE. 
    } 

    public static void main(String[] args) 
    { 
    int number = 0; 
    int output = 0; 
    System.out.println("Please enter a number:"); 
    number = keyboard.nextInt(); 
    output = reverseDigits(number); 
    System.out.println(output); 
    } 
} 
+1

Редактировать вопрос. Вставьте код внизу вопроса. Выберите код. Нажмите ctrl-k. Не забудьте сохранить. –

+0

Большое вам спасибо! Я нажал ctrl-k, а затем попытался вставить код. –

ответ

1

реверсирование int может быть сделан следующим образом:

  1. Набор result к нулю.
  2. Если число равно нуль, возвращает результат, что у вас есть до сих пор
  3. Добавить косой ноль в результате
  4. Заменить последний ноль с последней цифрой исходного числа
  5. падения последней цифрой Оригинальный номер
  6. Перейти к шагу 2.

Вот как сделать выбранные вещи в Java:

  • Для получения последней цифры использования int lastDigit = number % 10;
  • Чтобы удалить последнюю цифру использовать number /= 10;
  • Чтобы добавить ноль в качестве последней цифры результата используйте result *= 10;
  • Для замены роспускного последнего использования цифру result += lastDigit;

Demo.

+0

Я не уверен, что я последую за тобой. Я имею в виду, что мой код меняет число и вводит его по одной цифре за раз в реверсивный массив. Но я не понимаю, как идти оттуда. –

+0

@ethancodes Моя точка зрения заключается в том, что вам вообще не нужно «обращать». Замените его 'out * = 10; out + = num% 10; ' – dasblinkenlight

+0

О, конечно! Теперь я вижу! Гораздо проще, чем я думал! Спасибо! –

0

ОК сначала вы пытаетесь вернуть массив назад, но в объявлении вашего метода установлено значение int (не int []). Во-вторых, ваш код можно упростить следующим образом:

public static int reverseDigits(int num){ 
    int reverse = 0; 
    while(num != 0){ 
     reverse *= 10; 
     reverse += (num % 10); 
     num /= 10; 
    } 
    return reverse; 
} 

Надеюсь, это поможет! :)

+0

Я не видел последнего ответа dasblinkenlight. Извините за дублирующийся пост. – Spencer4134