logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[java] Jak wczytać i przetwarzać znaki z ciągu string jako int?

wiewioor222 13 Cze 2011 20:51 1911 12
REKLAMA
  • #1 9608345
    wiewioor222
    Poziom 13  
    Posty: 110
    Pomógł: 3
    Ocena: 5
    Witam napisałem program i mam nadzieje ze działa aczkolwiek mam problem

    wejscie ma być typu int a input sterujące wejsciem typu string jak zrobic by z input="0101010"; wczytywac kolejno znaki bo metodą charAt() nie potrafie tego zrobić. Prosze o pomoc bo musze zrozumieć jak to zrobic nie zalezy mi na gotowcu.

    Kod: Java
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #2 9608470
    piterus99
    Poziom 43  
    Posty: 8915
    Pomógł: 1084
    Ocena: 328
    Generalnie nie bardzo widzę do czego chcesz wczytywać te zmienne, bo rozumiem, że z ciągu znaków "1010101" chciałbyś mieć kilka zmiennych typu integer(może boolean, skoro ma być tylko dwuwartościowe?) i potem na nich pracować,tak?
    Bo tutaj widzę tylko jakieś x, y...

    Generalnie charAt do tego się nie nadaje, bo podaje kod ASCII znaku, który się znajduje pod danym miejscem, nie zaś pojedyńczy znak.

    Ja się szarpnąłem na użycie substring, jest to metoda, która wycina z całego ciągu znaków te, których indeksy podasz w parametrach(od, do). Dodatkowo, "opakowałem" to w metodę z klasy Integer parseInt, która konwertuje typ String na integer, dzięki czemu otrzymuje to, co chcę.
  • REKLAMA
  • #3 9608491
    wiewioor222
    Poziom 13  
    Posty: 110
    Pomógł: 3
    Ocena: 5
    ogólnie program ma nasladowac bramki... chociaz nawet po wyprubowaniu tego co mi powiedizałes nic nie wychodzi no ale to juz pewnie wina wyjść coś naknociłem ale dzieki wielkie
  • #4 9608513
    piterus99
    Poziom 43  
    Posty: 8915
    Pomógł: 1084
    Ocena: 328
    Metodę getOutput zrób abstrakcyjną w klasie bramka.
    Tak generalnie to to powinno działać, podstaw w nagłówku klasy bramka x=1 y=1 i powinno wypisać Ci prawidłowe wyniki.

    Pokaż jak napisałeś to co mówiłem, bo chyba musieliśmy się źle zrozumieć;)
  • REKLAMA
  • #5 9608548
    wiewioor222
    Poziom 13  
    Posty: 110
    Pomógł: 3
    Ocena: 5
    Teraz troszke pozmieniałem ale wX zamieniałem z x itp..

    Kod: Java
    Zaloguj się, aby zobaczyć kod



    chociaz teraz wyrzuca mi bład ze not nor i nand nie sa abstrakcyjne
  • REKLAMA
  • #6 9608573
    piterus99
    Poziom 43  
    Posty: 8915
    Pomógł: 1084
    Ocena: 328
    te int wX i wY to nie są nigdzie używane, wiesz o tym?.
    W System.out.println wywołuj metody od obliczania wyniku, bo nigdzie ich nie wywołujesz.

    Metoda abstrakcyjna nie ma definicji, więc nie możesz tam nic pisać, ma to być tylko deklaracja:
     public abstract int getoutput ();

    i tyle, nic więcej. Definicję masz w każdej klasie dziedziczącej po tym.

    Czy bramki mają mieć kilka wejść czy tylko dwa? Bo nie określiłeś się tutaj a do input wrzuciłeś trzy wejścia, masz za to tylko x,y...
  • #7 9608578
    wiewioor222
    Poziom 13  
    Posty: 110
    Pomógł: 3
    Ocena: 5
    po usunięciu int output z nawaisów z metody public int getoutput w clasach pochodnych dostaje komunikat "abstract methods canot have a body"
    i wskazuje wiersz public abstract int getoutput ()

    Dodano po 1 [minuty]:

    Bramki mają mieć 2 wejścia prócz not-a
    chodzi o to ze input ma sterowac wejściami

    Dodano po 4 [minuty]:

    Kod: Java
    Zaloguj się, aby zobaczyć kod
  • Pomocny post
    #8 9608642
    piterus99
    Poziom 43  
    Posty: 8915
    Pomógł: 1084
    Ocena: 328
    To powiedz mi czemu trzy zera w input?

    Ja bym zrobił tak - konstruktor dla klasy bramka z parametrem typu, który parsuje inty do odpowiednich zmiennych(w tym wypadku x,y), reszta tak, jak jest to może być. W każdej klasie, która dziedziczy po klasie bramka tworzysz taki sam konstruktor i w nim wywołujesz metodę konstruktora klasy wyższej "poleceniem" super(parametr);

    Ten kod, który podałeś już powinien coś wyświetlać.
  • #9 9608703
    wiewioor222
    Poziom 13  
    Posty: 110
    Pomógł: 3
    Ocena: 5
    wyświetla 0 jak zmieniam return np na 1 to wyświetla jeden ale nie wylicza:D jak mozesz to poczekaj bo nie znam instrukcji super(paramet) i nie wiem jak tego urzyć

    juz wiem o co chodzi. ale to jest takie zadanie z odgórnymi wytycznymi czyli mam zrobić
    klase Bramka jest klasą abstrakcyjną i zawiera elementy składowe:
    - pola klasy: inputs (typu całkowitego - ilość wejść bramki logicznej); Input (stan wejść bramki logicznej - ciąg zer i jedynek; typu int lub String) ,
    - metody klasy: setInputs (metoda ustawiająca stan wejść - zmienną Input),
    - metody abstrakcyjne: getOutput (metoda służąca do odczytu stanu wyjściowego - zwraca 0 lub jeden).

    tak samo pochodne powinny mieć tylko metode getoutput

    A w sumie public class zzz nie powinno byc ale jak to ma działac:/
  • #10 9609090
    piterus99
    Poziom 43  
    Posty: 8915
    Pomógł: 1084
    Ocena: 328
    public class zzz jest klasą, w której tylko sprawdzasz to, jak to(i czy) działa. Więc to nie wchodzi w skład zadania.

    Patrząc na to co teraz wkleiłeś, to tak: nie masz pola klasy inputs - liczba wejść bramki logicznej. Nie wiem też w jaki sposób można zrealizować Input za pomocą typu int(chyba, że tablica, to ok).

    Zrób tak:
    abstrakcyjna klasa Bramka, pola:
    int inputs, String input, int[] tab <- tablica poszczególnych stanów wejściowych
    metody:
    public void setInput(int ilosc, String in) { //zdefiniować/uzupełnić, inicjować tablicę!}
    public abstract int getOutput(); //nic nie definiować!

    Klasy dziedziczące generalnie tak jak masz.
    I w sumie super() potrzebne nie będzie.

    Jeszcze przyczepie się takiego szczegółu - nazwy klas zawsze wielką literą, nazwy obiektów, zmiennych itd zawsze od małej litery. Jako, że spacji używać nie wolno, wyrazy w zmiennej zaczynamy od wielkiej litery poza pierwszym - getInput(), getOutput(), czySlonMaRogi, etc. Staraj się, żeby kod jakoś wyglądał o ile nie sprawdza Ci go legenda PWR W8;)
  • #11 9609363
    wiewioor222
    Poziom 13  
    Posty: 110
    Pomógł: 3
    Ocena: 5
    nie wiem czy dobrze zrozumiałem ale coś takiego porpawiłem

    Lecz średnio a nie moge ustawić za pomoca setInput x i y z pochodnych bo wywala mi bład:/

    Kod: Java
    Zaloguj się, aby zobaczyć kod
  • #12 9609389
    piterus99
    Poziom 43  
    Posty: 8915
    Pomógł: 1084
    Ocena: 328
    Powiedz jasno co chcesz zrobić, bo to co kombinujesz to jedna wielka pomyłka... Sorry, ale wygląda, że po prostu nie masz o tym pojęcia - najbardziej widać to po pętli for.

    Mogłem Cię faktycznie zmylić tym, że klasy Not, Nand, Nor mogą zostać jak są, bo nie mogą. Twoim wejściem ma być String, następnie jego musisz przepisać na tablice integerów i to z niej wyciągać potrzebne dane i na jej podstawie wyciągać wnioski.
  • #13 9609603
    wiewioor222
    Poziom 13  
    Posty: 110
    Pomógł: 3
    Ocena: 5
    Programuje dopiero 3 dzien i nie znam jescze niektórych rzeczy tzn wiekszości:D
    a zapis ze String input="12121212" a potem int
    x = Integer.parseInt(input.substring(i,i+1));
    y = Integer.parseInt(input.substring(i,i+1)); i to w petli for tez nie bedzie dobrze??
    jezeli dobrze wyczytałem to zamienia stringa na typ integer z wcięciem konkretnego pola.

Podsumowanie tematu

LABEL_AI_GENERATED
W dyskusji poruszono problem wczytywania i przetwarzania znaków z ciągu string jako int w języku Java. Użytkownik chciał zrealizować program symulujący bramki logiczne, gdzie wejście miało być typu string, a wyjście typu int. Uczestnicy sugerowali użycie metody substring do wyodrębnienia poszczególnych znaków oraz konwersji ich na typ int za pomocą Integer.parseInt. Wskazano również na konieczność poprawienia struktury klas, w tym wprowadzenie metod abstrakcyjnych oraz odpowiedniego zarządzania wejściami. Użytkownik miał trudności z implementacją pętli for oraz zrozumieniem użycia konstruktorów i metod abstrakcyjnych.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA