varíavel não foi inicializada?

// programa que calcula x elevador a n

[color=blue]public class[/color] Exercicio2 {

[color=blue] static double[/color] elevado([color=blue]double[/color] x, [color=blue]int[/color] n) {

    [color=blue]for[/color] ([color=blue]int[/color] i = 0; n >= i; i++) {
        
        [color=blue]double[/color] resultado = x * x;

    }
    [color=blue]return[/color] resultado;
}

[color=blue]public static void[/color] main(String[] args) {
    Scanner sc = [color=blue]new Scanner(System.in);

    System.out.println("Digite a base");
    [color=blue]double[/color] base = sc.nextInt();

    System.out.println("Digite um expoente inteiro.");
    [color=blue]int[/color] expoente = sc.nextInt();

    [color=blue]double[/color] valor = elevado(base, expoente);
    System.out.println(valor);

}

}

Ele dá erro, fala que a varíavel resultado não foi inicializada, quando eu clico pra ele inicializa-lá, ele inicializa depois do for, então ela vai valer 0 e não dá certo, já se eu inicializa-lá fora do for ele fala que ela já foi inicializada e não deixa eu usar no for, e também dá erro quando inicializo ela for do for, por que?

[quote=eight]// programa que calcula x elevador a n

[color=blue]public class[/color] Exercicio2 {

[color=blue] static double[/color] elevado([color=blue]double[/color] x, [color=blue]int[/color] n) {

    [color=blue]for[/color] ([color=blue]int[/color] i = 0; n >= i; i++) {
        
        [color=blue]double[/color] resultado = x * x;

    }
    [color=blue]return[/color] resultado;
}

[color=blue]public static void[/color] main(String[] args) {
    Scanner sc = [color=blue]new Scanner(System.in);

    System.out.println("Digite a base");
    [color=blue]double[/color] base = sc.nextInt();

    System.out.println("Digite um expoente inteiro.");
    [color=blue]int[/color] expoente = sc.nextInt();

    [color=blue]double[/color] valor = elevado(base, expoente);
    System.out.println(valor);

}

}

Ele dá erro, fala que a varíavel resultado não foi inicializada, quando eu clico pra ele inicializa-lá, ele inicializa depois do for, então ela vai valer 0 e não dá certo, já se eu inicializa-lá fora do for ele fala que ela já foi inicializada e não deixa eu usar no for, e também dá erro quando inicializo ela for do for, por que?
[/quote]

O seu método pode ser sem retorno (void), acho que a ideia ficaria melhor.
Olhe o exemplo que eu fiz.

package br.com.sicoob.tdd;

public class TDD {
    
    void calcula(int base, int expoente){
        double resultado = Math.pow(base, expoente);
        System.out.println(resultado);
        }
}
package br.com.sicoob.tdd;

import java.util.Scanner;

public class Principal {

    public static void main(String []args){
        Scanner sc = new Scanner(System.in);
        TDD tdd = new TDD();
        
        System.out.println("Digite a base: ");
        int base = sc.nextInt();
        
        System.out.println("Digite o expoente: ");
        int expoente = sc.nextInt();
        
        tdd.calcula(base, expoente);
    
        
    }
}

O java já tem a classe math, que pode calcular a potência pra você, veja a utilização acima, isso possibilita que você deixe o código mais elegante sem precisar utilizar o for.
Dê uma olhada e veja se tem alguma dúvida, qualquer coisa estamos à disposição!!

valeu.

eight, explicando seu problema

Voce declarou a variavel resultado dentro do seu for, por isso vc não consegue utilizar fora dele, está fora de seu escopo.
Voce deve ter tentado também declarar duas vezes, uma vez fora do for e outra vez (novamente) dentro, por isso também deu problema

Tem que declarar fora do for e apenas utiliza-lo dentro dele, não declarando novamente outro com o mesmo nome.

então Joao, no caso eu nao posso usar a classe math, pq é um exercício de casa, mas vlw!

Igor, muito obrigado tbm! consegui resolver depois que vc falou que tenho que declarar antes e utilizá-la apenas no for, ficou assim, só pra fechar o tópico.

[color=blue]import[/color] java.util.Scanner;

[color=blue]public class[/color] Exercicio2 {

[color=blue] static double[/color] elevado(double x, int n) {

    [color=blue]double[/color] resultado = x;
    
    [color=blue]for[/color] ([color=blue]int[/color] i = 1; n > i; i++) {
        
        resultado *=  x;

    }
    [color=blue]return[/color] resultado;
}

[color=blue] public static[/color] void main(String[] args) {
Scanner sc = [color=blue]new[/color] Scanner(System.in);

    System.out.println("Digite a base");
   [color=blue] double[/color] base = sc.nextInt();

    System.out.println("Digite um expoente inteiro.");
    [color=blue]int[/color] expoente = sc.nextInt();

    [color=blue]double[/color] valor = elevado(base, expoente);
    System.out.println(valor);

}

}

Muito obrigado!