• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Java - błędny kod

VPS Starter Arubacloud
0 głosów
292 wizyt
pytanie zadane 6 listopada 2017 w Java przez Karol Kluziak Obywatel (1,210 p.)

Dzień dobry,

Zaczynam przygodę z Javą i napisałem taki kod:

import java.util.Scanner;

public class safeDecoder {
    public static void letsCoding(String tekst){
        int len = tekst.length();
        String dwa;
        for(int i =0; i < len; i++){
            dwa[i] = tekst[i] - 15 + 1 - i * 5;
        }
        return dwa;
    }
    public static void main(String[] args) {
        String tekst1;
        Scanner odczyt = new Scanner(System.in);
        tekst1 = odczyt.nextLine();
        System.out.print(letsCoding(tekst1));
    }
}

Program nie chce się skompilować. Ma ktoś może pomysł co źle napisałem?

P.S. Podkreśla mi składnię, gdzie odwołuję się do tablic w pętli for() i do zmiennej "dwa" przy komendzie "return" oraz wywołanie funkcji "letsCoding()".

4 odpowiedzi

+3 głosów
odpowiedź 11 kwietnia 2018 przez Tami Nowicjusz (200 p.)
edycja 15 kwietnia 2018 przez Tami

String w javie jest obiektem, nie możesz zrobić :

        String dwa;
        for(int i =0; i < len; i++){
            dwa[i] = tekst[i] - 15 + 1 - i * 5;

tak jakby to była tablica primitive type (np tablica intów).

Jeżeli chcesz się odnieść do poszczególnego znaku w Stringu, zamiast: dwa[i] napisz dwa.charAt(i). Jest to metoda, która w podanym Stringu zwraca znak w określonym miejscu w typie char.

+1 głos
odpowiedź 6 listopada 2017 przez Marchiew Dyskutant (7,690 p.)
przywrócone 6 listopada 2017 przez Marchiew
1. Gdy masz funkcję jako void to nic nie zwraca
2. Nie wydaje mi się, żeby było w javie można deklarować stringa i używać go jako tablicy (ale głowy nie dam)
komentarz 6 listopada 2017 przez Karol Kluziak Obywatel (1,210 p.)
1. Ten void zauważyłem, ale dopiero po zamieszczeniu pytania, ale po zmianie na String nadal nie działa

2. Jak się odwołać do konkretnych znaków w stringa w Javie?
komentarz 6 listopada 2017 przez Marchiew Dyskutant (7,690 p.)
Możesz jeszcze wywalić funkcję main poza klasę safeDecoder, stworzyć zmienną która przechwyci tę klasę i odwołać się poprzez twojaZmienna.letsCoding(tekst1)
komentarz 6 listopada 2017 przez adas94 Nałogowiec (29,200 p.)

2.

String s = "coś tam";

for (int i=0; i<s.length ; i++) {

   char kolejneZnaki = s.charAt(i);

}

 

0 głosów
odpowiedź 6 listopada 2017 przez Hiskiel Pasjonat (22,830 p.)
1. void nic nie zwraca, powinno być public static String letsCoding(String tekst)

2. Zamiast String dwa; to String[] dwa = new String[wielkosc (np.tekst.length)]; lub String dwa[] = new String[wielkosc];

3. Obiekty ktore deklarujesz w nawiasach sa dostepne tylko w nich
komentarz 12 kwietnia 2018 przez Wiciorny Ekspert (269,120 p.)

Obiekty ktore deklarujesz w nawiasach sa dostepne tylko w nich

formatuj odpowiedzi....

"Nie ma czegoś takiego jak deklarowanie obiektów w nawiasach " jeśli mówisz o argumencie, to nie jest to deklaracja obiektu .... potem ktoś to czyta i takie perełki mamy na rozmowie kwalifikacyjnej i wstyd się robi  

–1 głos
odpowiedź 6 listopada 2017 przez damianeqe Gaduła (4,380 p.)
Zmienna "dwa" powinna być zadeklarowane jako tablica String[] o rozmiarze "len", wtedy iteracja w forze miałaby sens, w związku z tym funkcja powinna również zwracać String[] zamiast void.
komentarz 6 listopada 2017 przez damianeqe Gaduła (4,380 p.)
Chociaż w takim przypadku bardziej pasowałby tablica charów, a nie stringów
komentarz 12 kwietnia 2018 przez Wiciorny Ekspert (269,120 p.)

@damianeqe, nie. Tablica string to nie tablica np znaków :) 

komentarz 12 kwietnia 2018 przez damianeqe Gaduła (4,380 p.)
Nie rozumiem Twojej wypowiedzi Poprawiłem się w komentarzu powyżej, że bardziej pasowałby tutaj tablica charów.

Podobne pytania

+1 głos
2 odpowiedzi 297 wizyt
–1 głos
2 odpowiedzi 478 wizyt
pytanie zadane 29 grudnia 2019 w Java przez kalendarmenn Obywatel (1,270 p.)
0 głosów
1 odpowiedź 256 wizyt
pytanie zadane 25 czerwca 2019 w Java przez MegaaSoft Obywatel (1,430 p.)

92,454 zapytań

141,262 odpowiedzi

319,089 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...