Diskuze: Štandardný vstup
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 9 zpráv z 9.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
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.
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
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.
Ale klídek HoBi, zřejmě se učí. A ten první komentář co si poslal byl vážně k hovnu
Ď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.println("Sucet cisel: " + sucet);
if (nezapor > 0) System.out.println("Priemer cisel: " + (sucet /
nezapor));
if(nezapor == 0) System.out.println("Ziadne nezaporne cisla");
System.exit(0);
}
}
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)
Zobrazeno 9 zpráv z 9.