Gdzie jest błąd? :(

0

// Zamiast odwróconych liczb, wyświetla mi te same liczby
// NP metoda reverse z liczby 3 powinna robić 0,33333333333
// Jednym słowem coś z tą metodą jest nie tak bo nie odwraca tych liczb :(
// z góry dziękuję za pomoc

public class Reversible {
	
	String napis;
	double liczba;
	


	public Reversible(double a) {
		liczba = a;
	}
	public Reversible(String b) {
		napis = b;
	}

	public void reverse() {
		napis = "jakis napis";
		liczba = (1 / liczba);
	}


}


public class ReverseTest {

  public static void main(String[] args) {

    Reversible[] revers = new Reversible[] {
        new ReversibleString("Kot"), 
        new ReversibleDouble(2), 
        new ReversibleDouble(3), 
        new ReversibleString("Pies"), 
        new ReversibleString("Ala ma kota i psa"), 
        new ReversibleDouble(10),
    };

    
    System.out.println("Normalne:");
    for (Reversible r : revers) {
      System.out.println(r);
    }
    
    for (Reversible r : revers) {
      r.reverse();
    }

    System.out.println("Odwrócone:");   
    for (Reversible r : revers) {
      System.out.println(r);
    }
    
    System.out.println("Przywrócone i zmienione:");
    for (Reversible r : revers) {
       // zostawiam na pozniej
    }
    

  }


}

public class ReversibleDouble extends Reversible {

	double liczba = super.liczba;

	public ReversibleDouble(double liczba) {
		super(liczba);
		liczba = super.liczba;
	}

	public void reverse() {
		super.liczba = (1 / (liczba));
	}

	String aString = Double.toString(liczba);

	public String toString() {
		return aString;
	}
}

public class ReversibleString extends Reversible {
	
	String napis;

	public void reverse() {
		String bufor = "";
		for(int i=napis.length()-1; i>= 0; i--){
			char litera = napis.charAt(i);
			bufor += litera;
		}
		napis = bufor;
	}
	
	public ReversibleString(String napis){
		super(napis);
		this.napis = napis;
	}

	public String toString(){
		return napis;
	}

}
0

bo na stałe zapamiętujesz na początku

String aString = Double.toString(liczba);

i potem to zwracasz
poza tym bez sensu się tu odwoływać do nadrzędnego super w którym niepotrzebnie tworzysz i String i double a wykorzystujesz tylko jedno
nie znam Javy ale Reversible powinno być tylko interfejsem który wymaga funkcji reverse() i toString() i nic więcej nie robi

no i rozumiem że to program do nauki bo praktyczność tego kodu jest zerowa, a String można zapewne odwrócić jedną linią kodu bez użycia żadnej tablicy

0
unikalna_nazwa napisał(a)

bo na stałe zapamiętujesz na początku

String aString = Double.toString(liczba);

i potem to zwracasz
poza tym bez sensu się tu odwoływać do nadrzędnego super w którym niepotrzebnie tworzysz i String i double a wykorzystujesz tylko jedno
nie znam Javy ale Reversible powinno być tylko interfejsem który wymaga funkcji reverse() i toString() i nic więcej nie robi

no i rozumiem że to program do nauki bo praktyczność tego kodu jest zerowa, a String można zapewne odwrócić jedną linią kodu bez użycia żadnej tablicy

tak, zdecydowanie dopiero zaczynam z programowaniem, jeszcze wiele rzeczy jest dla mnie niejasnych.
Dzięki za pomoc, wszystko śmiga.

PS: Jaką metodą można odwrócić napis bez tablicy?

No i generalnie stawiam że cały program można o połowę krócej napisać, ale tak jak mówię, dopiero się uczę.

0
String naOdwrot = (new StringBuffer(napis)).reverse().toString();

1 użytkowników online, w tym zalogowanych: 0, gości: 1