2014-12-14 3 views
1

Я продолжаю получать сообщение об ошибке, что переменная temp может не быть инициализирована. Я не понимаю - я его инициализировал, что я делаю неправильно?Почему моя переменная не инициализируется в этом коде?

import java.util.Scanner; 

public class ReverseDigit 
{ 
    static Scanner console = new Scanner(System.in); 

    public static void main(String[] args) 
    { 
     int num; //variable to hold the current number 
     int temp; //variable to hold the temporary number 

     System.out.print("Enter a positive interger: "); 

    do 
    { 
     num = console.nextInt(); 
     temp = reverseDigit(temp, num); 
    } 
    while (num > 0); 

     System.out.print(" " + temp + " "); 
    } 

    public static int reverseDigit(int temp, int num) 
    { 
     temp = num % 10;  
     num = num/10;  
     return num; 
    }    
} 
+1

никак не связаны, но вместо длинных комментариев на имена переменных, просто назвать их лучше, как '' currentNumber' и tempNumber', или '' currNum' и tempNum' и т.д. Также обратите внимание, что я не уверен, что это делает то, что вы хотите, поскольку вы продолжаете перезаписывать 'temp', только распечатываете его, когда все готово. –

+0

Вы пытаетесь инициализировать temp с помощью вызова метода, который принимает параметр temp в качестве параметра. –

+0

Непонятно, что ваш метод 'reverseDigit' пытается сделать с' temp', но вы просто собираетесь вернуть 'num/10'. Значение 'temp' полностью игнорируется и бессмысленно. Вы должны переосмыслить весь свой дизайн на данный момент - подумайте о том, что вы действительно хотите от 'reverseDigit', чтобы делать с точки зрения ввода и вывода. Как только вы поняли это и скорректировали свой код, я сильно подозреваю, что проблема, о которой вы говорите, исчезнет ...] –

ответ

0

Попробуйте это:

int temp = 0;  
do 
    { 
     num = console.nextInt(); 
     temp = reverseDigit(temp, num); 
    } 
    while (num > 0); 

     System.out.print(" " + temp + " "); 
+0

Я пытаюсь написать метод, который принимает целое число как параметр и отображает цифры в обратном порядке. Я написал программу для более раннего задания, которое это сделало. Мне также нужно было написать программу для тестирования метода. Когда я запускаю свою программу, я получаю приглашение ввести целое число, но я не вызываю метод правильно, потому что это все, что он делает. Ваше предложение инициализировать temp = 0 помогло. Программа выполняется до запроса моего ввода, но не вызывает метод. Здесь я потерялся. Я просмотрел множество примеров в своем тексте, но я все еще не правильно нахожу метод. @helppro – Terri

+0

Я понял! Мне просто нужно было переместить мой ... цикл. Спасибо за помощь – Terri

1

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

int temp = 0; 

Таким образом, вы не будете получить доступ к нему, прежде чем он инициализируется.

+0

'console.nextInt' инициализировать' num', а не 'temp'. –

+1

OP вызывает 'temp = reverseDigit (temp, num);', поэтому он пытается инициализировать 'temp' вызовом метода, который принимает параметр temp в качестве параметра. Поскольку аргументы сначала оцениваются, это проблема. –

+0

Это позаботилось об ошибке, которую я получал, но теперь моя программа не выполняется правильно. Я пытаюсь написать метод, который принимает целое число как параметр и отображает цифры в обратном порядке и программу для его проверки. Я написал программу для более раннего задания, которое это сделало. Когда я запускаю его, я получаю приглашение ввести целое число, но я не вызываю метод правильно, потому что это все, что он делает. Программа выполняет мой запрос. Он вызывает метод, но я испортил свою оригинальную программу в цикле, теперь я получаю только последнюю цифру. Может быть, цикл while? Предложения @Eran – Terri

Смежные вопросы