Member 13744841 Ответов: 2

Переменная не была инициализирована?


package JavaApplication8;

import java.util.Scanner;
public class JavaApplication8 {

    public static void main(String[] args) {


    Scanner scan =new Scanner(System.in);
    System.out.println("Enter an interger between 1000 and 9999:");
            int fourdigitnum=scan.nextInt();

if (fourdigitnum>=1000 &&fourdigitnum<=9999)
{
    System.out.println("Enter an interger between 0 and 9:");
            int onedigitnum=scan.nextInt();
        if(onedigitnum>=0 && onedigitnum<=9)
        {
            //old 4 digits
            int digit1,digit2,digit3,digit4;
            //new 4 digits
          int digit11,digit22,digit33,digit44;

            int temp;
            digit4=fourdigitnum%10;
            temp=fourdigitnum/10;
            digit3=temp%10;
            temp=temp/10;
            digit2=temp%10;
            temp=temp/10;
            digit1=temp%10;


            //finding 1st new digit
            if (0==0){

            if (digit1<onedigitnum)

             digit11=digit1+1;
            else if (digit1>onedigitnum)
                digit11=digit1%onedigitnum;

            //finding 2nd new digit
             if (digit2<onedigitnum)

            digit22=digit2+1;
            else if (digit2>onedigitnum)
                digit22=digit2%onedigitnum;

             //finding 3rd new digit
              if (digit3<onedigitnum)

            digit33=digit3+1;
            else if (digit3>onedigitnum)
                digit33=digit3%onedigitnum;

              //finding 4th new digit
               if (digit4<onedigitnum)

            digit44=digit4+1;
            else if (digit4>onedigitnum)
                digit44=digit4%onedigitnum;
            }

            System.out.println("The output is: "+digit11+""+digit22+""+digit33+""+digit44);
            //MY PROBLEM IS HERE.. im keep getting variable digit11 digit22.. etc.. have not been initialized

        }

        else
            System.out.println("Error, this is not a 1-digit integer");

}
    else
    System.out.println("Error, this is not a 4-digits integer");


}
    
}


Что я уже пробовал:

я попытался объявить переменные вне утверждения if /else .. или использовать печать вне if/else.. но это на самом деле не меняет его, и я попытался использовать if (условие) сделать что-то другое.. вместо (if... else if), но это вызвало у меня другие проблемы.. так что же делать?


я думаю, что моя проблема заключается в том, что system.out.println в конце.. не может прочитать значение, полученное из утверждения if/else ..и я не знаю, что вызывает это и как это исправить

2 Ответов

Рейтинг:
0

CPallini

Компилятор прав. Например:

int digit11, digit22, digit33, digit44;
 //..


 if ( digit1 < onedigitnum)
   digit11 = digit1 + 1;
 else if ( digit1 > onedigitnum)
   digit11 = digit1 % onedigitnum;

 //..

ваш код пропускает инициализацию digit11 каждый раз (digit1 == onedigitnum) держится, потому что ваш if - else if заявления не справляются с таким сценарием.


Рейтинг:
0

Patrice T

Цитата:
и я действительно не знаю, что вызывает это и как это исправить

Посмотрите на свой код: какова его ценность digit11 когда (digit1 == onedigitnum) ?
if (digit1<onedigitnum)
    digit11=digit1+1;
else if (digit1>onedigitnum)
    digit11=digit1%onedigitnum;

Ваш код ведет себя не так, как вы ожидаете, и вы не понимаете, почему !

Существует почти универсальное решение: запускайте свой код на отладчике шаг за шагом, проверяйте переменные.
Отладчик здесь, чтобы показать вам, что делает ваш код, и ваша задача-сравнить с тем, что он должен делать.
В отладчике нет никакой магии, он не знает, что вы должны делать, он не находит ошибок, он просто помогает вам, показывая, что происходит. Когда код не делает того, что ожидается, вы близки к ошибке.
Чтобы увидеть, что делает ваш код: просто установите точку останова и посмотрите, как работает ваш код, отладчик позволит вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения.
Отладчик - Википедия, свободная энциклопедия[^]
http://docs.oracle.com/javase/7/docs/technotes/tools/windows/jdb.html[^]
https://www.jetbrains.com/idea/help/debugging-your-first-java-application.html[^]
Отладчик здесь только для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.