Metoda w javie

Odpowiedz Nowy wątek
2019-01-08 19:57
Wieczorowy brunet
0

Mam takie polecenie:

Utwórz klasę Wyraz zawierającą pole tablicę typu char[] i pole typu int.
Bezparametrowy konstruktor tworzący wyraz zainicjuje pola odpowiednio: tablicą o
rozmiarze 100 elementów i wartością 0. Metoda dodajZnak(char) pozwoli na dopisywanie kolejnych znaków do ciągu. Metoda wyswietl() wyświetli ciąg, a metoda
length() zwróci ilość znaków w ciągu.
Działanie programu przedstaw na przykładzie.

A to mój kod, problem w tym że nie wiem jak sprawić by metoda przechowywała wczesniej wprowadzone informacje, tzn. żeby miec mozliwosc stworzenia wyrazu składającego się więcej niz jednego znaku.

public class Wyraz {
    protected char[] tab;
    protected int x;

    Wyraz() {
        this.tab = new char[100];
        this.x = 0;
    }

    char[] dodajZnak(char y) {
        tab[x] = y;
        return tab;

    }

    void wyswietl() {
        for (int i = 0; i < x; i++) {
            System.out.print(tab[i]);
        }
        System.out.println();
    }

    int length() {
        return x;
    }

}

Pozostało 580 znaków

2019-01-08 20:06
0

W dodajZnak zamiast tab[x] daj tab[x++]. W twoim kodzie x jest cały czas 0. Jak zamienisz na x++ to wartość x za każdym razem będzie zwiększana.

Dodatkowo zabezpiecz swój program na wypadek gdyby x przekroczył 99, bo przekroczysz rozmiar tablicy.

Pozostało 580 znaków

2019-01-08 20:13
Wieczorowy brunet
0

Nie dziala. Chodzi mi o to by raz wywołanie metody nie zaczynało wyrazu od nowa. Np. wpisujesz wyraz.dodajZnak('q'); to na indeksie zerowym jest już q kiedy znowu uruchomisz program to na indeksie nr.1 też bedzie q a wyraz brzmi "qq" chyba że za drugim razem wpiszesz 'a' wyraz.dodajZnak('a'); to wtedy ma być "qa" i tak to wyczerpania zapasów.

Chcesz pamiętać stan pomiędzy uruchomieniami programu? - Delor 2019-01-08 21:03

Pozostało 580 znaków

2019-01-08 21:11
0

Twoje dodajZnak() ma działać w pętli, albo jak za każdym razem chcesz sobie odpalać program na nowo to użyj pliku tekstowego do, którego będziesz zapisywał a przy uruchomieniu odczytywał znaki, ewentualnie jakiegoś Redisa :P

Pozostało 580 znaków

2019-01-08 21:38
Wieczorowy brunet
0

myslalem ze modyfikowanie obiektów(zamiast tworzenia ich na nowo) jest czymś oczywistym.

Pozostało 580 znaków

2019-01-08 22:37
0
Nie dziala. Chodzi mi o to by raz wywołanie metody nie zaczynało wyrazu od nowa. Np. wpisujesz wyraz.dodajZnak('q'); to na indeksie zerowym jest już q kiedy znowu uruchomisz program to na indeksie nr.1 też bedzie q a wyraz brzmi "qq" chyba że za drugim razem wpiszesz 'a' wyraz.dodajZnak('a'); to wtedy ma być "qa" i tak to wyczerpania zapasów.

No tak ale u Ciebie x jest cały czas 0 więc zawsze dodajesz znak na indeksie zerowym. Zwiększaj sobie x o 1, za każdym razem gdy dodajesz znak i będzie git.
Inna sprawa, że nie da się tak łatwo pamiętać stanu zapisu. Ta tablica jest w pamięci RAM, jak zamkniesz program i uruchomisz na nowo to znów będzie pusta. Sprecyzuj co potrzebujesz w tej kwestii zrobić

Pozostało 580 znaków

2019-01-09 11:32
0

Na pewno twórca zadania miał na myśli zachowywanie stanu pomiędzy wywołaniami programu czy tylko pomiędzy wywołaniami metody dodajZnak()?
Ten "Bezparametrowy konstruktor tworzący ... zainicjuje pola ... tablicą ... 100 elementów i wartością 0." wskazuje raczej na to drugie.

Pozostało 580 znaków

2019-01-12 23:33
Wieczorowy brunet
0

to po co mi tablica o pojemnosci 100 elementów skoro mogę wpisać do niej tylko jeden element typu char?

Pozostało 580 znaków

2019-01-12 23:49
Wieczorowy brunet
0

nvm, pewnie chodziło o to że np. ```
Wyraz wyraz = new Wyraz();

    wyraz.dodajZnak('a');
    wyraz.dodajZnak('c');

    wyraz.wyswietl();
    wyraz.length();

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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