NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Mezi 13:00 až cca 15:00 proběhne odstávka sítě z důvodu aktualizace. Web bude po celou dobu nedostupný.

Diskuze – Lekce 12 - Pole v Javě

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
Odpovídá na Tano7
Matúš Olejník:10.9.2019 23:46

Tak keď spravíš to, že v mene ktoré hľadáš prevedieš všetky písmená na malé tak treba mať aj v tom poli "simpsonovi" mená napísané len malými písmenami.

Odpovědět
10.9.2019 23:46
/* I am not sure why this works but it fixes the problem */
Avatar
Jan Béňa
Člen
Avatar
Jan Béňa:3.10.2019 22:44

Prosím, nějaká dobrá duše. Co by mi vysvětlila, jak vypsat v poli Stringy místo intů. Zjistil jsem, že víceméně až do kapitoly s poli mi bylo vše jasné. Tak jsem si v práci říkal, že bych si doma zkusil vypsat pole se jmény pro moji budoucí databázi jmen. Ve které bych pak náhodně generoval jména. Pochopitelně až bych došel do OOP, kde jsem zahlédnul nahodný generátor(kostka). Bohůžel jsem ztroskotal jen na pouhém vypsání jmen do pole.Přikládám dva asi z 50 možností co jsem zkoušel. Tyhle dva sice neukazují chybu, ale program i přesto spadne :D.

String[] jmena= {"Black","Whi­te","Reed","McDo­nald","Storm"};
System.out.prin­tln(jmena[0]);

A nebo ...

String[] jmena= new String[1];
jmena[0]= ("Black");
jmena[1]= ("White");
System.out.prin­tln(jmena[1]);

Předem děkuji za pomoc.

 
Odpovědět
3.10.2019 22:44
Avatar
Jan Béňa
Člen
Avatar
Odpovídá na Jan Béňa
Jan Béňa:3.10.2019 23:03

Tak beru zpět to první funguje, měl jsem tam navíc složenou závorku, která mi tam asi dělala paseku. Jinak děkuji za skvělé stránky. Palec nahoru.

 
Odpovědět
3.10.2019 23:03
Avatar
Odpovídá na Jan Béňa
Matúš Olejník:3.10.2019 23:21

Ahoj, áno prvý spôsob ti bude fungovať a v tom druhom ti hodí chybu už pri

jmena[1] = ("White"); //tie zátvorky sú tu zbytočné

je to preto, lebo týmto príkazom

String[] jmena = new String[N]; //kde v tvojom prípade N = 1

hovoríš, že chceš aby sa do poľa jmena zmestil len N počet mien. No a ako už vieš indexovanie začína od nuly takže hodnoty môžeš vkladať na indexy od 0 po N - 1. Keďže ty si si tam deklaroval pole o veľkosti 1 tak nemôžeš už vkladať údaje na index 1 a viac.
Keď chceš aby ti prešiel aj druhý spôsob tak môžeš napr. zmeniť deklaráciu na

String[] jmena = new String[2];

prípade inú, tebou potrebnú, veľkosť :)

Odpovědět
3.10.2019 23:21
/* I am not sure why this works but it fixes the problem */
Avatar
Jan Béňa
Člen
Avatar
Odpovídá na Matúš Olejník
Jan Béňa:3.10.2019 23:47

Aha já s tím právě počítal že v programování začíná od nuly proto jsem tam na deklaraci napsal 1 teď když jsi to tak pěkně napsal si uvědomuji že by to byla blbost. Jsem to asi prehlednul. Nicméně děkuji za odpověď pomohla mi. Databázi bych měl teď ještě se naučit to náhodně generovat ale tam budu muset ještě dojít a ještě jednou děkuji za odpověď.

 
Odpovědět
3.10.2019 23:47
Avatar
Tano7
Člen
Avatar
Odpovídá na Tano7
Tano7:7.10.2019 19:41

Už kód po úpravě funguje krásně. změna na int pozice = Arrays.binary­Search(simpso­novi, simpson.toLower­Case());
if (pozice <= 0)

package lekce4;

import java.util.Arrays;
import java.util.Scanner;

public class lekce4 {

    public static void main(String[ ] args) {
Scanner sc = new Scanner(System.in, "UTF-8");

String[ ] simpsonovi = {"Homer", "Marge", "Bart", "Lisa", "Maggie"};
System.out.println("Zadej Simpsna (z rodiny Simpsnů): ");
String simpson = sc.nextLine();

Arrays.sort(simpsonovi);
int pozice = Arrays.binarySearch(simpsonovi, simpson.toLowerCase());  /**Arrays.binarySearch(z jakeho pole, co hledam)  */
if (pozice <= 0)
{
    System.out.println("Jo, to je Simpson!");
} else
{
    System.out.println("Hele, tohle není Simpson!");
}

}
}
Odpovědět
7.10.2019 19:41
Život by byl mnohem snazší, kdybychom k němu měli zdrojový kód.
Avatar
Odpovídá na Tano7
Matúš Olejník:7.10.2019 20:53

A to už podľa čoho si si povedal, že to funguje správne?

V poli simpsonovi máš mená ktoré začínajú veľkými písmenami a potom keď ideš hľadať či sa v ňom nachádza požadované meno tak v ňom zmeníš všetky písmená na malé a to hľadáš. Už len tu je jasné, že niečo nie je dobre a asi slovo "Bart" nebude to isté ako "bart".

A keby aj hej tak máš potom podmienku, o ktorej tvrdíš, že vyriešila tvoj problém

if (pozice <= 0)

Keď pozreš dokumentáciu k binarySearch tak v nej je napísané

index of the search key, if it is contained in the array; otherwise, (-(insertion point) - 1). The insertion point is defined as the point at which the key would be inserted into the array:

čiže ti vráti číslo 0 alebo väčšie ako 0 ak sa hľadaný výraz nachádza v poli. Inak vráti záporné číslo, ktoré ak dáš do absolútnej hodnoty ti označí index na ktorom by sa hľadané slovo nachádzalo ak by v tom poli naozaj bolo.

Stačí pri zadávaní simpsona napísať random reťazec a tvoj program vypíše, že je z rodiny Simpsnov pretože funkcia binarySearch vráti zápornú hodnotu.

Najprv svoj program poriadne otestuj než ho tu pre nováčikov označíš ako super fungujúce riešenie.

Odpovědět
7.10.2019 20:53
/* I am not sure why this works but it fixes the problem */
Avatar
Tano7
Člen
Avatar
Odpovídá na Tano7
Tano7:8.10.2019 1:38

Uvedený kód funguje, viz. screeny, vyzkoušej si ho.

Odpovědět
8.10.2019 1:38
Život by byl mnohem snazší, kdybychom k němu měli zdrojový kód.
Avatar
Odpovídá na Tano7
Matúš Olejník:8.10.2019 9:52

Nemusím ho ani skúšať aby som videl, že je to zle. Otestuj si svoj program poriadne a uvidíš. Máš podmienku s dvomi vetvami a testuješ program len na jeden vstup.

Až si to všimneš, zistíš, že neplechu ti tam robí najmä to "toLowerCase" kvôli čomu tam potom robíš chybnú podmienku len aby sa zdalo, že to funguje.

10. září 23:46 som ti dokonca písal čo treba spraviť ak chceš ignorovať veľkosti písmen.

Odpovědět
8.10.2019 9:52
/* I am not sure why this works but it fixes the problem */
Avatar
Tomáš Weiter:1.11.2019 11:34

Pekna lekce

 
Odpovědět
1.11.2019 11:34
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 222.