Zdravím, mám rozpracovaný projekt a nevím si rady s GUI, našel by se tu nekdo kdo by mi stim za nejakou financni castku pomohl?
Příspěvky odeslané z IP adresy 195.178.73.–
#15 K4BlOs
Nebudem ti to tu rozpisovat, lebo to by som tu musel vlozit cely kod a z toho by si sa moc nenaucil. Radsej sem vlozim par kodov, ktore by ti mohli pomoct.
http://www.abbeyworkshop.com/…va/readFile/
#11 K4BlOs
Nemozes to priradit priamo, pretoze ArrayList obsahuje Integer, ktore Java berie ako objekty. Jedna z moznosti je:
int[] pole = new int[polePosloupnosti.size()];
Iterator<Integer> iter = polePosloupnosti.iterator();
for(int i = 0; i<polePosloupnosti.size(); i++) {
pole[i] = iter.next().intValue();
}
#1 Noro
Mozno by bolo lepsie inicializovat pole hodnotami (napr. A, B, C, D) a potom to pole zamiesat. Myslim, ze toto by ti mohlo pomoct: http://blog.ryanrampersad.com/…ray-in-java/
#12 Šulin Hrozný
Nemas osetrene ak na vstupe bude male pismeno napr. 'a5'
int x, y;
if(Character.isLowerCase(odkud.charAt(0))) {
x = odkud.charAt(0) - 'a';
}
else {
x = odkud.charAt(0) - 'A';
}
y = odkud.charAt(1) - '1';
System.out.println(x);
int figurka = sachovnice[x][y];
/*
* if (figurka == 0) tadynicneni;
* if (figurka != hrajiciHrac) tonenitvojefigurka;
*/
if(Character.isLowerCase(kam.charAt(0))) {
x = kam.charAt(0) - 'a';
}
else {
x = kam.charAt(0) - 'A';
}
y = kam.charAt(1) - '1';
Preco si nevytvaras viacere metody a triedy? Ked vsetko napises v jednej main funkcii tak kod bude strasne neprehladny a bude obsahovat vela duplicitnych casti.
#6 K4BlOs
Ako mozes napisat kod, ktoremu nerozumies? Trocha som ti upravil ten tvoj kod a pridal komentare, dufam, ze ti to pomoze.
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class SP {
static int dalsiClen(int cislo) {
//vypocita druhu mocninu premennej cislo
double umocneno = Math.pow(cislo, 2);
//prevedie double na String pomocou wrapper class String
String umocnenoStr = String.valueOf(umocneno);
//priradi String od indexu 0 (vratane) po 2 (bez znaku na indexe 2)
String prvniDveCisla = umocnenoStr.substring(0, 2);
//prevedie String na Integer a pripocita 1
return Integer.parseInt(prvniDveCisla) + 1;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int cislo = 0;
while (cislo < 10) {//dokud zada menší číslo
System.out.println("Zadej dvouciferne cislo: ");
// absolutna hodnota zadaneho Integeru, pri inom datovom type vyhodi Exception
cislo = Math.abs(scanner.nextInt());
}
scanner.close();
//vytvorenie kontajneru ArrayList na uchovavanie objektov typu Integer
List<Integer> polePosloupnosti = new ArrayList<Integer>();
/* Prida zadane cislo do ArraListu, v tvojom kode by to asi nemalo byt
* pretoze chces aby naslo zhodu len s vygenerovanymi cislami a nie aj zo zadanym cislom
* polePosloupnosti.add(cislo);
*/
while (true) {
cislo = dalsiClen(cislo);
//Ak kontajner obsahuje cislo tak vrati true
// a break ukonci cyklus while
if (polePosloupnosti.contains(cislo)) {
break;
}
//inak novovygenerovane cislo prida do kontajneru
else {
polePosloupnosti.add(cislo);
}
}
//Vypise velkost kontajneru
System.out.println("Velikost pole: " + polePosloupnosti.size());
//Vypise obsah pomocou toString()
System.out.println("Pole vygenerovanych cisel: " + polePosloupnosti.toString());
}
}
#1 Patrik
Nenapisal si na aku skolu chodis, ci SS alebo VS, ale to je v podstate jedno , aj ked na VS by ste mali mat predmety zaoberajuce sa algoritmizaciou. Na programovanie potrebujes dobre analyticke myslenie. Vediet problem rozlozit na viacero jednoduhsich problemov, postupne ich vyriesit a prepojit aby spolu splnili ciel. Ako zacat? No od zaciatku, vybrat si programovaci jazyk, zacat pisat jednoduche programy (Hello World, nacitanie vstupu, faktorial - rekurzia, prehladavacie algoritmy.....) a naucit sa syntax. Pred riesenim problemu sa zamysli, ze co ocakavas aby program robil, ake vstupy bude mat, ake vystupy. Rozhodol si sa ist cestou OOP a vravis, ze teoriu vies - tak skusaj. Programovat sa nenaucis citanim knih a cudzich kodov ale tym, ze sam budes tvorit kod. Nevravim, ze citanie nepomaha, sam citam neustale nieco informaticke, ale bez toho kodenia to proste nejde. Ked zvladnes zakladnu syntax jazyka postupne si skusaj kniznice, uc sa o datovych strukturach, prehladavacich a triediacich algoritmoch, casovej zlozitosti...
Tiez sa programovat este len ucim a dost mi pomaha papier a ceruzka. Vcera som pisal program na riesenie hry ClickNSlide, ktory vyuzivai heuristiky. "Spotreboval" som pri tom dve A4, na jednej som mal same stvorce 3x3, na druhej pseudokod aby som sa v tom nestracal.
Pozri si nieco o Regex, to by ti mohlo pomoct.
http://www.vogella.com/…article.html
http://docs.oracle.com/…ntial/regex/
public static void main(String[] args) {
int pocet = 0;
Pattern vzor = Pattern.compile("ahoj");
Matcher predloha = vzor.matcher("Ahoj ahoj, cau. Nazdar ahoj, ahoj.");
while(predloha.find()) {
pocet++;
}
System.out.println("Pocet vyskytov: " +pocet);
}
Mal by si implementovat rozhranie Comparable. Sice pouzivam Eclipse, ale aj tak nechapem preco to mne ide a tebe nie. TreeSet a TreeMap vyzaduju implementovanie rozhrania Comparable aby mohli porovnat pridavane objekty usporiadat. Toto by ti mohlo pomoct: http://docs.oracle.com/…s/order.html
Vyraz this.predmety.add(predmet) vracia true ak sa podari vlozit dany predmet do kolekcie predmety, vracia false ak uz kolekcia predmety dany predmet obsahuje (jeden ziak nemoze studovat dany predmet 2x). Pre lepsie pochopenie pozri rozhranie TreeSet v http://docs.oracle.com/…/6/docs/api/
Chybu ti to hadze asi preto, ze si neimportol rozhranie TreeSet ale TreeMap. Mne ta main metoda funguje.
Odporucam ti precitat nejaky tutorial o kolekciach, napr. http://www.linuxsoft.cz/article.php?… a http://www.linuxsoft.cz/article.php?…
Takto nejak by som riesil ja:
import java.util.SortedSet;
import java.util.TreeSet;
public class Ziak {
private int index;
private String meno;
private String priezvisko;
private SortedSet<Predmet> predmety = new TreeSet<Predmet>();
public Ziak(int index, String meno, String priezvisko) {
this.index = index;
this.meno = meno;
this.priezvisko = priezvisko;
}
public boolean pridajPredmet(Predmet predmet) {
//Vlozi predmet, vracia true ak ho kolekcia predmety este neobsahuje
return this.predmety.add(predmet);
}
public String toString() {
return this.index+". "+this.meno+" "+this.priezvisko+" "+this.predmety;
}
public static void main(String[] args) {
Ziak prvy = new Ziak(1, "Jano", "Maly");
prvy.pridajPredmet(new Predmet("Programovanie v jazyku Java"));
}
}
Pricom trieda Predmet by vyzerala takto nejak:
public class Predmet {
private String nazov;
public Predmet(String s) {
this.nazov = s;
}
public String toString() {
return nazov;
}
}
#1 marek
Moj postup by bol takyto:
Vytvorit triedu Ziak, ktora bude mat atributy napr. Index, Meno, Priezvisko, Predmety. Atribut Predmety moze byt kolekcia SortedSet (odtranuje duplicity a udrziava vzostupne poradie). Potom konstruktor na vytvorenie ziakov a metody na pridanie/odstraneni predmetu k danemu ziakovi. Potom triedu Predmet s atributmi Nazov, Hodnotenie, ktore by bolo kolekciou triedy Znamka s atributmi Hodnota (1 - 5) a datum. Ku kazdej triede prekryt metodu toString pre spravne vypisanie atributov danej triedy.
Vytvorit triedu Trieda pre ziakov jednej triedy a v nej konstruktor, ktory by vytvoril znova kolekciu SortedSet a ta by uchovavala objekty Ziak danej Triedy. Metody na pridanie/odstranenie ziakov a tiez toString na vypis.
V main class potom len vytvoris objekty Trieda a do ktorych pridavas ziakov, k nim predmety a k predmetom znamky.
Da sa s tym pohrat, podla toho co ocakavas od toho programu. Len vypisy ziakov a ich znamok alebo aj nejake operacie ako vyhodnotenie ziakov danej triedy podla konkretne predmetu, vyhodnotenie triedy celkovo, urcenie najlepsieho ziaka v triede alebo zo vsetkych tried, urcit priemer na ziaka/ na predmet.
#1 jonhnw
Chybu mas napr - pouzivas premenne s rovnakymi identifikatormi - to by ani chyba nebola lebo String znak je platny len v tom cykle, ale tam s nim pracujes ako s typom char. String sa porovnava x== "A" a nie 'A'
Mozes pouzit ten marek-ov kod, s tym ze presun podmienku if do vnutra cyklu do-while. Ale za kazdym zadanim znakom z konzoly musis stlacit enter.
Mne to ide, skopiroval si to odo mna, alebo prerobil to svoje? Nechyba ti tam toto:
static Scanner sc = new Scanner(System.in);
Treba pouzit wrapper class. Pozor na konvenciu, nazov triedy je vzdy s velkym pismenom!
import java.util.*;
public class Kalkulacka {
static Scanner sc = new Scanner(System.in);
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int prvniCislo = vstupCisla();
char znak = vstupZnaku();
int druheCislo = vstupCisla();
if (znak == '+') {
int vysledek = ((prvniCislo) + (druheCislo));
System.out.println(prvniCislo +" + "+ druheCislo +" = "+ vysledek);
}
else {
int vysledek = ((prvniCislo) - (druheCislo));
System.out.println(prvniCislo +" - "+ druheCislo +" = "+ vysledek);
}
}
public static int vstupCisla(){
System.out.println("Zadej operand: ");
String tmp = new String(sc.nextLine());
Integer cislo = new Integer (String.valueOf(tmp));
return cislo;
}
public static char vstupZnaku(){
System.out.println("Zadej znak + nebo -: ");
char znak = sc.nextLine().charAt(0);
return znak;
}
}