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!
Avatar
Neaktivní uživatel:6.8.2017 12:45

Ahoj, precvičujem si úlohy v Jave a narazil som na istý problém. Nie je pre mňa zložité pochopiť samotnú úlohu, ale neviem, ako dostať čísla z 2. riadku vstupu tak, aby som ich mohol následne porovnať (či sú väčšie, rovné alebo menšie ako 0). Pre pochopenie - určite od vás nežiadam, aby ste mi napísali celý kód. Len tú časť so spracovaním a porovnaním vstupu. Pridávam zadanie vo forme obrázku. Ďakujem.

Odpovědět
6.8.2017 12:45
Neaktivní uživatelský účet
Avatar
Honza Bittner
Tvůrce
Avatar
Nahoru Odpovědět
6.8.2017 13:31
FIT ČVUT alumnus :-) Sleduj mě na https://twitter.com/tenhobi a ptej se na cokoli na https://github.com/tenhobi/ama.
Avatar
Odpovídá na Honza Bittner
Neaktivní uživatel:6.8.2017 14:18

Pozri. Ďakujem za snahu, ale obávam sa, že ste nepochopil celkom moju otázku. Potreboval som pomôcť s tým, ako tento vstup porovnám. Keďže sa v ňom nachádzajú aj medzery a ako začiatočník si sebou nie som istý. Keď som nenašiel vysvetlenie (možno som len prehliadol) tohto problému na Vašej stránke, tak som napísal na forum. Tým, že ma odkážete na Google s "java standard input command line," vo mne vznikla pochybnosť, či ste si vôbec prečítal moju otázku a zadanie (sprevádzaná pochybnosťou o Vašej profesionalite, voči študentovi). V prípade, že som Vás touto jednoduchou požiadavkou o vysvetlenie znechutil, či ukrátil o čas sa ospravedlňujem. (v)

Nahoru Odpovědět
6.8.2017 14:18
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Patrik Valkovič:6.8.2017 14:25

https://www.itnetwork.cz/…utorial-pole
V posledním příkladě je to prakticky vyřešené.
Namísto sc.nextLine() zavoláš sc.nextInt()
viz https://docs.oracle.com/…Scanner.html

Nahoru Odpovědět
6.8.2017 14:25
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Honza Bittner
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Honza Bittner:6.8.2017 14:30

Kdyby sis problém správně hledal, zjistil bys například, že existuje něco jako Java Scanner, který ti může dost ulehčit práci a pravděpodobně jej chceš použít.

V úkolu je zadáno, že dostaneš jedno kladné číslo, která značí počet následujících čísel, které chceš nějakým způsobem načíst a zpracovat. Zpracováváš jen čísla >= 0 a nějakým chytrým způsobem si musíš zpracovat průměr a součet. Pravděpodobně je tedy vhodné si do jedné proměnné ukládat součet a do jiné zase počet nezáporných čísel.

Jakmile si tedy importuješ již zmíněný Scanner

import java.util.Scanner;

můžeš si načíst číslo N (počet) něčím jako

int pocet = Scanner.nextInt();

a následně vytvoříš for cyklus s počtem iterací rovnu počtu a budeš zpracovávat dané číslo, viz zadání. Tj. pokud je číslo větší rovno 0, zařadíš ho do součtu a inkrementuješ počítadlo (tyto proměnné si samozřejmě vytvoříš někde na začátku programu). Ve for cyklu můžeš mít tedy něco jako

var cislo = Scanner.nextInt();

if (cislo >= 0) {
  soucet += cislo;
  pocetCisel++;
}

Pak ti stačí jen vypsat součet a správně spočítat průměr.

Nahoru Odpovědět
6.8.2017 14:30
FIT ČVUT alumnus :-) Sleduj mě na https://twitter.com/tenhobi a ptej se na cokoli na https://github.com/tenhobi/ama.
Avatar
Odpovídá na Honza Bittner
Patrik Valkovič:6.8.2017 14:49

Ale klídek HoBi, zřejmě se učí. A ten první komentář co si poslal byl vážně k hovnu :D

Nahoru Odpovědět
6.8.2017 14:49
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Odpovídá na Honza Bittner
Neaktivní uživatel:6.8.2017 17:19

Ďakujem. Presne toto som potreboval:) Vaša odpoveď mi pomohla. Ešte taká maličkosť predtým, ako označím toto vlákno za vyriešené. Automat posudzuje odpovede na tie úlohy podľa troch random vstupov. Čiže pokiaľ sa všetky 3 odpovede zhodujú, bude program braný za správny. Mne to však vzalo 2x za správne a tretí krát nie. Bral som do úvahy aj možnosť v ktorej by bol počet nezáporných 0, čiže nie je možné aby program nulou delil. Pozreli by ste na môj zdroják?

import java.util.Scanner;
class SucetPriemer{
public static void main(String[] args){
Scanner sc = new Scanner(System.in, "Windows-1250");
int N = sc.nextInt();
int[] cisla = new int[N];
int sucet = 0;
int nezapor = 0;

for (int i = 0; i < N; i++)
cisla[i] = sc.nextInt();

for (int i=0; i< cisla.length; i++)
if(cisla[i] >= 0){
sucet += cisla[i];
nezapor++;
}

if (nezapor > 0) System.out.prin­tln("Sucet cisel: " + sucet);
if (nezapor > 0) System.out.prin­tln("Priemer cisel: " + (sucet / nezapor));
if(nezapor == 0) System.out.prin­tln("Ziadne nezaporne cisla");
System.exit(0);
}
}

Nahoru Odpovědět
6.8.2017 17:19
Neaktivní uživatelský účet
Avatar
Honza Bittner
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Honza Bittner:6.8.2017 17:45

Pole čísel si IMHO udržovat nemusíš. Stačí ti součet a počet čísel v součtu. Ale asi nevadí.

Nedělám v Javě a tak nevím jak tam přesně nějaké věci fungují, avšak nemůže se stát, že výraz (sucet / nezapor) bude double, avšak podle zadání je požadována celá dolní část, tj. int?

Zkusil bych něco jako

(int) (sucet / nezapor)
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
6.8.2017 17:45
FIT ČVUT alumnus :-) Sleduj mě na https://twitter.com/tenhobi a ptej se na cokoli na https://github.com/tenhobi/ama.
Avatar
Odpovídá na Honza Bittner
Neaktivní uživatel:6.8.2017 20:02

Vďaka funguje to. :-)

Nahoru Odpovědět
6.8.2017 20:02
Neaktivní uživatelský účet
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 9 zpráv z 9.