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

Java Java Vypsání textu víckrát

Avatar
vlastajuracka:

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  -2 5.9.2015 19:11
Avatar
Lukas C#
Redaktor
Avatar
Odpovídá na vlastajuracka
Lukas C#:

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  +2 5.9.2015 19:20
Avatar
vlastajuracka:

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

 
Nahoru Odpovědět 5.9.2015 19:27
Avatar
Lukas C#
Redaktor
Avatar
Odpovídá na vlastajuracka
Lukas C#:

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

 
Nahoru Odpovědět 5.9.2015 19:35
Avatar
Lukas C#
Redaktor
Avatar
Odpovídá na vlastajuracka
Lukas C#:

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
Avatar
Kos
Člen
Avatar
Odpovídá na vlastajuracka
Kos:

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
Redaktor
Avatar
Odpovídá na vlastajuracka
vita:

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  +1 5.9.2015 20:01
Avatar
vita
Redaktor
Avatar
vita:

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

 
Nahoru Odpovědět 5.9.2015 20:03
Avatar
Odpovídá na Lukas C#
vlastajuracka:

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
Lukas C#
Redaktor
Avatar
Odpovídá na vlastajuracka
Lukas C#:

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
Avatar
Taskkill
Redaktor
Avatar
Odpovídá na vlastajuracka
Taskkill:

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
Avatar
dobrakmato
Člen
Avatar
dobrakmato:

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
Čekni stránku so zabavnými obrázkami z internetov: https://www.coolovo.eu?ref=1007
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.