Rozwiązanie



import javax.swing.*; 

public class Liczba {

  int a;

  public Liczba(int liczba) {  // konstruktor
    a = liczba; 
  }

  public int getValue() {       // zwraca wartość liczby
    return a;
  }

  public double pow(int n) {   // metoda potęgowania

    if (n < 0) {               // warunek konieczny: n >=0
       System.out.println("Niedopuszczalna wartość wykładnika");
       return -0.1;
    }

    double wynik = 1;
    while(n-- > 0) wynik *= a;  // pętla potęgowania
    return wynik;
  }

  // Do jakiej parzystej nieujemnej potgi 
  // należy podnieść liczbę, by uzyskać targetVal

  public int evenExponentFor(int targetVal) {
    int w = 1;
    int n = 0;

    if (targetVal > 1 && a >= -1 && a <= 1) {
       System.out.println("Wadliwe dane");
       return -1;
    }
 
    while (w < targetVal) {
      n+=2;
      w *= a*a;
      System.out.println(n + " " + w);
    }
    return n;
  }


  public static void main(String[] args) {

    Liczba a;     // refrencja do obiektów - liczb

    String in1;   // napis oznaczający wprowadzoną liczbę

    JOptionPane.showMessageDialog(null, "Podnoszenie do potęgi");

    // pętla wprowadzania danych będzie działać dopóki nie
    // zamkniemy któregoś z okienek  dialogowych

    while ((in1 = JOptionPane.showInputDialog("Podaj a")) != null) {    

      a = new Liczba( Integer.parseInt(in1) );  // tworzymy obiekt
                                                // napis -> int
                                                // int argumentem konstruktora 
      // pobieramy wykładnik
      String in2 = JOptionPane.showInputDialog("Podaj n");
   
      if (in2 == null) break;  // jeżeli przerwano dialog - wyjście z pętli

      int n = Integer.parseInt(in2); // napis -> int

      // uzyskanie wyniku za pomocą wywołanie metody pow
      double wynik = a.pow(n);
      System.out.println(a.getValue() + " do potegi " + n + " = " + wynik);
    }

    JOptionPane.showMessageDialog(null, "Poszukiwanie parzystego wykładnika");
    
    while ((in1 = JOptionPane.showInputDialog("Podaj a")) != null) {    

      a = new Liczba( Integer.parseInt(in1) );  

      // pobieramy wartość docelową
      String in2 = JOptionPane.showInputDialog("Podaj cel");
   
      if (in2 == null) break;  

      int cel = Integer.parseInt(in2);

      // uzyskanie wyniku za pomocą wywołanie metody evenExponent
      int n = a.evenExponentFor(cel);
      System.out.println("Aby uzyskać co najmniej " + cel 
                         + " liczbę " + a.getValue() 
                         + " trzeba podnieść do parzystej potęgi " + n);
      System.out.println(a.getValue() + " do potegi " + n + " = " + a.pow(n));
    }
 
    System.out.println("Koniec programu");
    System.exit(1);
  } 

}