#4 Tchibo
Díky, už to funguje... Já věděl, že to bude nějaká blbost... :)
Příspěvky odeslané z IP adresy 88.101.98.–
#2 KIIV
No ve splitu rozděluji String s, který zadá uživatel tak, že obsahuje právě 4 čísla oddělená mezerou. Jenže naplnění int a,b,c,d nefunguje... Funguje to pro a, kde je index [0]... Takže vstup bude:
1 2 3 4
int a = 1 a pak to vypíše:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
Ahoj,
potřeboval bych poradit s takovou "určitě prkotinou"... Potřeboval bych do svého programu vmáčknout část, ve které uživatel zadá přesně 4 čísla na jedné řádce a ty čtyři čísla naplní čtyři proměnné...
Nepříklad zadá: "1 25 13 74" a promněnné budou a = 1, b = 25, c = 13, d = 74; Zadaný řetězec bude obsahovat přesně 4 libovolně velká, ale nezáporná čísla.
Zatím jsem zkoušel tohle, ale nefunguje to...:
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Zadej 4 cisla: ");
String s = sc.next();
String[] st = s.split(" ");
int a = Integer.parseInt(st[0]);
int b = Integer.parseInt(st[1]);
int c = Integer.parseInt(st[2]);
int d = Integer.parseInt(st[3]);
...
Děkuji za pomoc.
Akorát mi to po nahrazení vynechává některá prvočísla: např.: 23, 29 atd...
Nechápu proč...
import java.util.*;
public class Prvocisla{
public static int vstupMaxCisla(){
Scanner sc = new Scanner(System.in);
System.out.print("Zadej max. cislo: ");
int cislo = sc.nextInt();
return cislo;
}
public static boolean jePrvocislo(int cislo){
int pomocna = 1;
for (int j = 1; j<cislo; j++){
pomocna = pomocna *( cislo%(cislo-j));
}
if (pomocna > 0){pomocna = 0;return true;}
else pomocna = 0; return false;
}
public static void vypisPrvocislo(int cislo){
for (int i = 2; i < cislo;i++){
if (jePrvocislo(i)) System.out.print(i + ", ");
}}
public static void main(String[] args) {
int cislo = vstupMaxCisla();
System.out.println("---Vysledky---");
jePrvocislo(cislo);
vypisPrvocislo(cislo);
}}
Zdravím, mám napsat program, který vypíše prvočísla až do maximálního čísla, které zadá uživatel. Myslím, že jsem program dokázal vytvořit, ale potřeboval bych, aby výstup čísel byl od nejmenšího po největší a ne naopak, jak to mám já.
tj. uživatel zadá např. 4 a můj program vypíše:
---Výsledky---
3, 2,
a já bych chtěl, aby vypsal:
---Výsledky---
2, 3,
Nevíte, prosím, jak to udělat nějak elegantně? Zdrojový kód:
/**
* @ author Nib;
*/
import java.util.*;
public class Prvocisla{
public static int vstupMaxCisla(){
Scanner sc = new Scanner(System.in);
System.out.print("Zadej max. cislo: ");
int cislo = sc.nextInt();
return cislo;
}
public static boolean jePrvocislo(int cislo){
int pomocna = 1;
for (int j = 1; j<cislo-1; j++){
pomocna = pomocna *( cislo%(cislo-j));
}
if (pomocna > 0){pomocna = 0;return true;}
else pomocna = 0; return false;
}
public static void vypisPrvocislo(int cislo){
if (jePrvocislo(cislo) == true && cislo != 1){
System.out.print(cislo+", ");}
}
public static void main(String[] args) {
int cislo = vstupMaxCisla();
int pomcislo = cislo;
System.out.println("---Vysledky---");
for (int i = 0; i<pomcislo;i++){
jePrvocislo(cislo);
vypisPrvocislo(cislo);
cislo = cislo-1;
}
}}
Díky za pomoc! :)