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í.

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
Robert Vyskup:28.7.2021 20:49

Jinak tam taky bohatě stačí místo cisla.length dát pocet.

 
Odpovědět
28.7.2021 20:49
Avatar
Robert Vyskup:29.7.2021 15:11

A tak trochu mimo topic. Jaký je rozdíl mezi indexem prvku a jeho hodnotou. Prosím o obsáhlejší vysvětlení i s příklady jak rozlišit index a hodnotu daného prvku. Díky

 
Odpovědět
29.7.2021 15:11
Avatar
Alesh
Tvůrce
Avatar
Odpovídá na Robert Vyskup
Alesh:29.7.2021 19:23
pole[0] = 1;

ta nula je index, ta jednička hodnota

 
Odpovědět
29.7.2021 19:23
Avatar
Odpovídá na Alesh
Robert Vyskup:30.7.2021 5:01

Dobře, to bych chápal. Ale co když vezmu takové písmeno 'a' - jeho číselný index je 97, ale jaká je jeho hodnota, pokud se tedy dá vůbec vyjádřit.

 
Odpovědět
30.7.2021 5:01
Avatar
Alesh
Tvůrce
Avatar
Odpovídá na Robert Vyskup
Alesh:30.7.2021 10:11

ASCII tabulka je pole znaků, na indexu 97 je hodnota 'a'.

ascii[97] = 'a';
 
Odpovědět
30.7.2021 10:11
Avatar
Robert Vyskup:9.8.2021 15:22

Absolutně nechápu, kde mám problém u té proměnné délky pole, mám to napsané vpodstatě stejně:

Scanner sc = new Scanner(System.in, "Windows-1250");
        System.out.println("Ahoj, spočítám ti průměr známek. Kolik známek zadáš?");
        int pocet = Integer.parseInt(sc.nextLine());
        int[] znamky = new int[pocet]; //převedení počtu známek na pole prvků
        for(int i = 0; i < pocet; i++) { //projedeme celé pole
            System.out.printf("Zadejte %d. číslo: ", i + 1); //vytiskneme jednotlivé indexy pro daný prvek, musíme přičíst jedna, abychom nezačínali od nuly
            znamky[i] = Integer.parseInt(sc.nextLine()); //číslo jednotlivého prvku(známky) hodíme do pole
        }
        int soucet = 0; //součet musí být ustanoven před cyklem, v cyklu ho už ustanovit nejde
        for(int i : znamky) { //vybereme jedntlivé známky z pole
            soucet += i; //a sečteme je
        }
        float prumer = soucet / (float)znamky.length; //uděláme průměr, musí zde být změna z int na float u pole znamky
        System.out.printf("Průměr tvých známek je: %f", prumer);

Zobrazí to první větu, já zadám počet známek a nic. Program běží a nic. Předtím jsem ten file i se souborem přejmenovával, ale toto je už úplně nový file i soubor a pořád to samé. Hodí mi to hlášku Unexpected Exception. Pak se běh programu zastaví a zobrazí se toto hlášení:

Exception in thread "main" java.lang.NumberFormatException: For input string: ""
        at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:67)
        at java.base/java.lang.Integer.parseInt(Integer.java:670)
        at java.base/java.lang.Integer.parseInt(Integer.java:778)
        at cz.itnetwork.prumero.prumero.main(prumero.java:18)
Zadejte 1. číslo: [ERROR] Command execution failed.
org.apache.commons.exec.ExecuteException: Process exited with an error: 1 (Exit value: 1)
    at org.apache.commons.exec.DefaultExecutor.executeInternal (DefaultExecutor.java:404)
    at org.apache.commons.exec.DefaultExecutor.execute (DefaultExecutor.java:166)
    at org.codehaus.mojo.exec.ExecMojo.executeCommandLine (ExecMojo.java:982)
    at org.codehaus.mojo.exec.ExecMojo.executeCommandLine (ExecMojo.java:929)
    at org.codehaus.mojo.exec.ExecMojo.execute (ExecMojo.java:457)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:957)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:289)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:193)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:78)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:567)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
Failed to execute goal org.codehaus.mojo:exec-maven-plugin:3.0.0:exec (default-cli) on project prumero: Command execution failed.: Process exited with an error: 1 (Exit value: 1) -> [Help 1]

To see the full stack trace of the errors, re-run Maven with the -e switch.
Re-run Maven using the -X switch to enable full debug logging.

For more information about the errors and possible solutions, please read the following articles:
[Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
 
Odpovědět
9.8.2021 15:22
Avatar
Robert Vyskup:9.8.2021 19:02

Tak nic omlouvám se vyřešeno tam mi jenom u

System.out.printf("Zadejte %d. číslo: ", i + 1);

chybělo před druhýma uvozovkama \n
Což tu také není v originále, a nováčka jako jsem já to může řádně potrápit. Na druhou stranu si už to celé řešení budu pamatovat až nadosmrti.

 
Odpovědět
9.8.2021 19:02
Avatar
Robert Vyskup:22.8.2021 18:10

Může mi někdo vysvětlit jak přesně funguje binarySearch() spolu s Arrays.sort(). Vezněme si ten příklad Simpsonových. Když to pole neseřadím pomocí Arrays.sort tak když zadám Bart, tak to Barta najde a vypíše: "Jo, to je Simpson!", když však zadám Homer, tak ho to nenajde a vypíše to "Hele, tohle není Simpson!" Pak když pole seřadím tak to najde oba. Co se tam přesně děje.

 
Odpovědět
22.8.2021 18:10
Avatar
Atrament
Člen
Avatar
Odpovídá na Robert Vyskup
Atrament:22.8.2021 18:52

Je to kvůli tomu jak funguje binary search - více zde

 
Odpovědět
22.8.2021 18:52
Avatar
Odpovídá na Atrament
Robert Vyskup:22.8.2021 19:49

Chápu, že to najde Barta v tom nesetříděném poli, protože je přesně uprostřed. A pak to najde Lisu a Maggie, jelikož to začne hledat v té druhé půlce, když je nenajde přesně uprostřed. Co se změní v případě, kdy to setřídím pomocí Arrays.sort()? Vždyť pak je přece Bart první abecedně a Homer druhý a stejně je to najde. Co se tam změní, že je to po setřídění najde?

 
Odpovědět
22.8.2021 19:49
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.