NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Generování náhodného stringu

V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
tbartolen
Člen
Avatar
tbartolen:25.2.2016 10:33

Ahoj, snažím se udělat část programu, který by mi generoval náhodný string a ukladal ho do pole.

public class uloha_2 {

        public static void main(String[] args) {
                String [] pole = new String [100];
                for  (int i=0; i<100; i++) {

                }


        }

}

Jak bych měl vymyslet generování náhodných znaků o délce 3 do meho pole "pole" ...?

JE mi jasný, že bych měl nejdřív deklarovat možné znaky, které muže použít,

String znaky = new String {"q","w","e","r","t","z","u","i","o","p","l","k","j","h","j","f"};

A z toho nějak načítat znaky náhodně do mého pole...má na to java nějaký zjednodušovák? NEbo jak bych to měl cca dělat? Díky za radu

Editováno 25.2.2016 10:35
Odpovědět
25.2.2016 10:33
Navštiv www.fb.com/skkelticz
Avatar
tbartolen
Člen
Avatar
tbartolen:25.2.2016 10:48

update
Takže mi jde vzásadě o to, jak náhodný hodnot z jednoho pole přepsat do pole druhýho...

public class uloha_2 {

        public static void main(String[] args) {
                String[] znaky = {"q","w","e","r","t","z","u","i","o","p","l","k","j","h","j","f"};
                String [] pole = new String [100];
                for  (int i=0; i<100; i++) {

                }




        }

}
Nahoru Odpovědět
25.2.2016 10:48
Navštiv www.fb.com/skkelticz
Avatar
tbartolen
Člen
Avatar
tbartolen:25.2.2016 11:28

a když chci načítat do konzole přímo z konzole přes scanner?

public static void main(String[] args) {
                Scanner sc = new Scanner(System.in);
                String nacteni = sc.nextLine();
                String [] pole = new String [100];
                int [] nactenii = new int[100];
                for  (int i=0; i<100; i++) {
                        nactenii = Integer.parseInt(nactenii);sc.nextLine();
                }

Tak mi to hází nějakou chybu :(

Nahoru Odpovědět
25.2.2016 11:28
Navštiv www.fb.com/skkelticz
Avatar
Tomáš Brůna
Tvůrce
Avatar
Odpovídá na tbartolen
Tomáš Brůna:25.2.2016 11:49

chyba ke tady

nactenii = Integer.parseInt(nactenii);sc.nextLine();

nevim co to má být ale do pole můsíš ukládat takto:

pole[ index ] = cislo;

pokud chces do pole dosadit hodnotu z jineho pole, tak takto:

pole[ index ] = druhePole[index];
Nahoru Odpovědět
25.2.2016 11:49
Vi veri universum vivus vici
Avatar
tbartolen
Člen
Avatar
Odpovídá na Tomáš Brůna
tbartolen:25.2.2016 11:52

a co když chci do pole zadat String, to nemužu?

Nahoru Odpovědět
25.2.2016 11:52
Navštiv www.fb.com/skkelticz
Avatar
Tomáš Brůna
Tvůrce
Avatar
Odpovídá na tbartolen
Tomáš Brůna:25.2.2016 11:58

do pole "intů" nemůžeš zadat String, pokud chceš pole znaků (textů) tak ho vytvoříš takto:

String[] pole = {"prvniString", "druhý string", "atd...."};

za chvilku sem zkusim něco hodit

Nahoru Odpovědět
25.2.2016 11:58
Vi veri universum vivus vici
Avatar
tbartolen
Člen
Avatar
Odpovídá na Tomáš Brůna
tbartolen:25.2.2016 12:02

Dobře a pokud bych chtěl do pole sstringu načítat stringy přmo z konzole, šlo by to napsat takhle?

String [] retezec = sc.nextLine();

...? Diky

Nahoru Odpovědět
25.2.2016 12:02
Navštiv www.fb.com/skkelticz
Avatar
Tomáš Brůna
Tvůrce
Avatar
Tomáš Brůna:25.2.2016 12:08

ne nešlo
teď mi dochází že pole Stringů můžeš vytvořit tak jak jsem psal, nebo takto:

String[] asd = new String[10];

text ze vstupu bych do něj tedy ukládal takto:

String[] pole = new String[10];
pole[0] = sc.nextLine();
Nahoru Odpovědět
25.2.2016 12:08
Vi veri universum vivus vici
Avatar
Tomáš Brůna
Tvůrce
Avatar
Tomáš Brůna:25.2.2016 12:10

Jinak na to jak jsi psal v tom prvním příspěvku:

String znaky = new String {"q","w","e","r","t","z","u","i","o","p","l","k","j","h","j","f"};

na vytvoření pole např. s abecedou rád používám tento způsob:

String znaky = "abcdefghijklmnopqrstuvwxyz";
String[] pole = znaky.Split("");
Nahoru Odpovědět
25.2.2016 12:10
Vi veri universum vivus vici
Avatar
tbartolen
Člen
Avatar
Odpovídá na Tomáš Brůna
tbartolen:25.2.2016 12:17

Ok a takto ? Ted mi to povolí napsat pouze dva retezce a ukončí se, nevím moc proč...

import java.util.Arrays;
import java.util.Scanner;
public class uloha_2 {

        public static void main(String[] args) {
                Scanner sc = new Scanner(System.in);
                System.out.print("Napište libovolný řetězec. Bude uložen do pole. Pro vypsání řetězce stiskněte **");
                String [] retezec = new String [100];
                retezec [0] = sc.nextLine();
                String a = sc.nextLine();
                String b = "**";
                if (a==b)
                        System.out.print(retezec);







        }


}

Neměl bych tam mít ještě někde for?

Editováno 25.2.2016 12:18
Nahoru Odpovědět
25.2.2016 12:17
Navštiv www.fb.com/skkelticz
Avatar
Tomáš Brůna
Tvůrce
Avatar
Odpovídá na tbartolen
Tomáš Brůna:25.2.2016 12:21

promiň trochu z toho nechápu co to má dělat

Nahoru Odpovědět
25.2.2016 12:21
Vi veri universum vivus vici
Avatar
tbartolen
Člen
Avatar
Odpovídá na Tomáš Brůna
tbartolen:25.2.2016 12:26

program bude načítat řetězce do pole. Řetězec " ** " bude ukončovat načítání. Po ukončení načítání (řetězcem ** ) program automaticky zobrazí načtené řetězce v řádku oddělené čárkou a mezerou.

Nahoru Odpovědět
25.2.2016 12:26
Navštiv www.fb.com/skkelticz
Avatar
Tomáš Brůna
Tvůrce
Avatar
Odpovídá na tbartolen
Tomáš Brůna:25.2.2016 12:34

zkusil jsem to trochu přepsat

System.out.println("Napište libovolný řetězec. Bude uložen do pole. Pro vypsání řetězce stiskněte **");
                String[] retezec = new String [100];

                String vstup;
                int index = 0;
                do
                {
                 vstup = sc.nextLine();
                 retezec[index] = vstup;
                 index++;
                }
                while(!vstup.equals("**"));

                for (int i = 0; i < retezec.length; i++)
                {
                    System.out.println(retezec[i]);
                }

zkus se naučit používat ArrayList, jedna z jeho výhod je ta že nemusíš předem definovat jeho velikost

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
25.2.2016 12:34
Vi veri universum vivus vici
Avatar
tbartolen
Člen
Avatar
Nahoru Odpovědět
25.2.2016 12:36
Navštiv www.fb.com/skkelticz
Avatar
Tomáš Brůna
Tvůrce
Avatar
Odpovídá na tbartolen
Tomáš Brůna:25.2.2016 12:37

není zač :)

Nahoru Odpovědět
25.2.2016 12:37
Vi veri universum vivus vici
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 15 zpráv z 15.