É como eu te disse, como o compilador vai saber que nesse trecho a variável value esta inicializada
if ( option == ratDollar )
System.out.printf( "\nU$%.2f equivalem a R$%.2f!\n\n",
value, myRatingDollar.getRatingDollar() );
já que nada garante que a segunda linha desse trecho foi executada
if ( option == ratDollar )
value = input.nextDouble();
mas uma pergunta você sabe oque é bloco?
pois olha como poderia ficar seu código
Scanner input = new Scanner( System.in );
RatingDollar myRatingDollar = new RatingDollar( 2.50 , 0.00 );
RatingEuro myRatingEuro = new RatingEuro( 3.00 , 0 );
int ratDollar = 1;
int ratEuro = 2;
int option;
double value;
System.out.print( "\nBEM VINDO AO RATING MONEY SYSTEM!!!\n\n\n" );
System.out.print( "Digite a opção de cotação, segundo as opcoes abaixo:\nDollar: 1\nEuro: 2\nOpcao numero: " );
option = input.nextInt();
System.out.print( "\n\n" );
if ( option == ratDollar ){
System.out.println( "Opcao escolhida: DOLLAR!" );
System.out.printf( "Quantia de Dolares a serem convertidos em Reais: U$" );
value = input.nextDouble();
myRatingDollar.setRatingDollar( value );
System.out.printf( "\nU$%.2f equivalem a R$%.2f!\n\n",
value, myRatingDollar.getRatingDollar() );
} else if ( option == ratEuro ) {
System.out.println( "Opcao escolhida: EURO!" );
System.out.print( "Quantia de Euros a serem convertidos em reais: E$" );
value = input.nextDouble();
myRatingEuro.setRatingEuro( value );
System.out.printf( "\nE$%.2f equivalem a R$%.2f!\n\n",
value, myRatingEuro.getRatingEuro() );
} else {
System.out.println("Opção invalida");
}
notou a diferença???
lembrando que assim não é necessário inicializar value com 0 pois pra chegar nessa linha
System.out.printf( "\nU$%.2f equivalem a R$%.2f!\n\n",
value, myRatingDollar.getRatingDollar() );
obrigatoriamente essa linha já teria sido executada
value = input.nextDouble();
apos um if tudo que estiver entre chaves ({ e }) sera executado quando a condição retornar verdadeiro o código entre chaves é chamado de bloco
e a síntese
if(condição1) {
...
} else if(condição2) {
...
...
} else if(condiçãon) {
...
} else {
...
}
pode ser lida como se não for conição1 verifica se é condição2 … se não for verifica se é condiçãon se não for nenhuma executa o else
Aconselho você a estudar e até a próxima!