NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Vypsání textu víckrát

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

Aktivity
Avatar
vlastajuracka:5.9.2015 19:11

Ahoj, mám problém mám úkol, že mám napsat číslo a podle toho počet hvězdiček např.
1 - *
5 - *****
3 - ***
atd. ;)
Problém je, že nevím jak udělat abych nemusel psát všude podmínky ale udělat to nějak jinak opravdu nevím jak předem díky za odpověď :)

 
Odpovědět
5.9.2015 19:11
Avatar
Odpovídá na vlastajuracka
Neaktivní uživatel:5.9.2015 19:20

Napíšu pseudokód, protože Javu neumím:

string number = číslo_které_zadáš;
int count = int.Parse(number);
for(int i = 0; i < count; i++)
{
Vypiš_do_konzo­le("*");
}

Nahoru Odpovědět
5.9.2015 19:20
Neaktivní uživatelský účet
Avatar
vlastajuracka:5.9.2015 19:27

Todle nejde do string nemůžeš uložit int

 
Nahoru Odpovědět
5.9.2015 19:27
Avatar
Odpovídá na vlastajuracka
Neaktivní uživatel:5.9.2015 19:35

Neříkej mi, že v Jave neexistuje funkce na parsování textu do čísla...

Nahoru Odpovědět
5.9.2015 19:35
Neaktivní uživatelský účet
Avatar
Odpovídá na vlastajuracka
Neaktivní uživatel:5.9.2015 19:37

Když už máš úkol v Javě, tak by sis mohl pročíst alespoň základní kontrukce Javy, ne? To co ty hledáš, je ve 3. díle Základní konstrukce jazyka Java:

int a = Integer.parse­Int(number);

Nahoru Odpovědět
5.9.2015 19:37
Neaktivní uživatelský účet
Avatar
Kos
Člen
Avatar
Odpovídá na vlastajuracka
Kos:5.9.2015 19:55

Zkus něco takového

String číslo = "5";
int počet = Integer.parseInt(číslo);
for (int i = 0; i < počet; i++)
      System.out.print("*");

Ale to jsou úplné základy. Doporučuji si přečíst http://www.itnetwork.cz/java/zaklady. Tohle by měl každý umět.

 
Nahoru Odpovědět
5.9.2015 19:55
Avatar
vita
Tvůrce
Avatar
Odpovídá na vlastajuracka
vita:5.9.2015 20:01

Možné řešení:

import java.util.Scanner;

public class Stars {

        private static Scanner scanner = new Scanner(System.in);

        public static void main(String[] args) {

                String vstup = null;
                boolean pokracovat = true;

                do {
                        System.out.print("Zadej celé kladné číslo (pro konec 0): ");
                        vstup = scanner.next();
                        try {
                                int cislo = Integer.parseInt(vstup);

                                if (cislo == 0) {
                                        pokracovat = false;
                                } else if (cislo < 0) {
                                        System.out.println("Zadané číslo nebylo kladné!");
                                } else {
                                        StringBuilder sb = new StringBuilder();
                                        sb.append(cislo);
                                        sb.append(" - ");

                                        for (int i = 0; i < cislo; i++) {
                                                sb.append("*");
                                        }

                                        System.out.println(sb.toString());
                                }
                        } catch (Exception e) {
                                System.out.println("Chybný vstup!");
                        }
                } while (pokracovat);
                System.out.println("Konec");
        }
}

Vysvětlení:

Tato část kódu řeší tvůj dotaz. Zbytek je načítání a ošetření vstupu od uživatele.

StringBuilder sb = new StringBuilder();
sb.append(cislo);
sb.append(" - ");

for (int i = 0; i < cislo; i++) {
        sb.append("*");
}

System.out.println(sb.toString());

Vytvořím objekt typu StringBuilder (pro rychlejší sestavování textového řetězce) a v cyklu for potom přidám počet hvězdiček podle velikosti zadaného číslo.

Výstup programu:

Zadej celé kladné číslo (pro konec 0): 3
3 - ***
Zadej celé kladné číslo (pro konec 0): -2
Zadané číslo nebylo kladné!
Zadej celé kladné číslo (pro konec 0): 99999999999999999999999999999999
Chybný vstup!
Zadej celé kladné číslo (pro konec 0): lisahfdasůhfa
Chybný vstup!
Zadej celé kladné číslo (pro konec 0): 11
11 - ***********
Zadej celé kladné číslo (pro konec 0): 0
Konec
 
Nahoru Odpovědět
5.9.2015 20:01
Avatar
vita
Tvůrce
Avatar
vita:5.9.2015 20:03

Kos byl s odpovědí o 6 minut rychlejší :-).

 
Nahoru Odpovědět
5.9.2015 20:03
Avatar
Odpovídá na Neaktivní uživatel
vlastajuracka:5.9.2015 20:07

Já nechci nějak bejt chytrej ale ted mi doslo že sem byl dost blbej a ty si to udělal zbytečně složitě vlastně stačí udělat for cyklus a tam daš to číslo a tolikrát to vypíše hvězdičku
int a = 4;
for(int i = 0; i < a; i++)
{
System.out.prin­t("*");
}
Vypis teda bude ****
Omlouvám se za zdržování ;)

 
Nahoru Odpovědět
5.9.2015 20:07
Avatar
Odpovídá na vlastajuracka
Neaktivní uživatel:5.9.2015 20:11

Zbytečná složitost :-D No, rozdíl mezi mým a tvým programem je ten, že ty to číslo musíš napsat ve zdrojovém kódu, ale já ho můžu načíst za běhu programu :-)

Nahoru Odpovědět
5.9.2015 20:11
Neaktivní uživatelský účet
Avatar
Odpovídá na vlastajuracka
Neaktivní uživatel:5.9.2015 21:05

Sorry za mínus, chtěl jsem se podívat kdo ti dal mínus a když jsem skrýval jeho jméno omylem jsem se uklepnul, nic si z toho prosím nědělej. A když už jsem tady, tak tě taky nasměruju ... podle mě bys ale měl začít spíš u problematiky programování a uvažování jako programátor... podmínky, cykly, switch/case ... musíš hlavně přemýšlet a až potom v klidu kódit... jinak přeju hodně zdaru. Hoj

Nahoru Odpovědět
5.9.2015 21:05
Neaktivní uživatelský účet
Avatar
dobrakmato
Člen
Avatar
dobrakmato:6.9.2015 22:23

Arrays.fill() by malo tiez fungovat, neviem ci je rychlejsie alebo pomalsie.

int length = new Scanner(System.in).nextInt();
char[] array = new char[length];
Arrays.fill(array, '*');
System.out.println(new String(array));
 
Nahoru Odpovědět
6.9.2015 22:23
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 12 zpráv z 12.