- Új nyomógombos Nokiák érkeztek
- A Watch7-tel debütálhat a Samsung vércukormérője
- Apple iPhone 13 - hízott, de jól áll neki!
- Milyen okostelefont vegyek?
- Késik a következő S24 Ultra kamerafrissítés?
- Poco F5 - pokolian jó ajánlat
- Nothing Phone 2a - semmi nem drága
- Honor Magic5 Pro - kamerák bűvöletében
- Google Pixel 8 Pro - mestersége(s) az intelligencia
- Redmi Note 12 Pro - nem tolták túl
Hirdetés
-
Premier előzetesen a Demon Slayer -Kimetsu no Yaiba- Sweep the Board!
gp Elérhető lett Switch-re a játék, amely leginkább a Mario Party-hoz hasonlítható.
-
Igencsak szerény méretekkel rendelkezik az Aetina Xe HPG architektúrás VGA-ja
ph Az 50 wattos modellt beágyazott rendszerekbe, MI-vel kapcsolatos munkafolyamatokhoz és edge applikációkhoz szánták.
-
Olcsó 5G-s ajánlatot nyújt a Realme Indiának
ma Megérkezett a Realme C65 5G, az első készülék a MediaTek Dimensity 6300-zal.
Új hozzászólás Aktív témák
-
Davs
tag
Hali!
Nezegettem mar par tutorialt, megyeket a Java, stb. Az lenne viszont a kerdesem, hogy a vilagon ugye most a legelterjettebb nyelv a java, ha jol emlekszem 20% felett van (nemtudom pontosan melyik kutatas alapjan olvastam ezt). Dilemmaban voltam, hogy a Javanak, vagy a C++-nak alljak-e neki, vegul Java mellett dontottem (amit abszolut nem banok, objektumokkal kapcsolatban is megtanultam sok olyan dolgot, amit kesobb mas nyelvnel is tudok kamatoztatni).
A kerdesem az lenne, hogy hol hasznaljak a Javat? Ugye mobil/android szektor az vilagos. De azonfelul? Windows-os/Linux-os GUI-s programokhoz en valahogy a C++-t szimpatikusabbnak talalom, foleg Windowsra, ahol nem kell JDK-t telepiteni kulon..foleg, hogy a c++ ha jol tudom "gyorsabb". Nem otthoni, inkabb ilyen ceges viszonylatban erdekelne a dolog, hogy ha pl fosuli utan Java fejleszto lennek, akkor kb mire szamithatok. Tehat milyen teruleten hasznaljak a Javat?
Koszonom a valaszokat -
Davs
tag
Hali, kellene egy kis segitseg. Sudoku-fejto programocskan munkalkodok (androidra, de most azt hagyom, kulon javaban szeretnem implementalni az egeszet, aztan atvinni oda).
Adott a sudoku[] tomb, 81elemmel ugyebar, mindegyik eleme vagy <1,9> szam, vagy 0, ha ures. Addig futna a program, amig van 0 a sudoku tombben, mert ugye addig nincs megoldva.
Ott tartok, hogy minden mezohoz el szeretnem menteni a lehetseges szam-jelolteket es kicsit tanacstalan vagyok abban, hogy milyen adattipust hasznaljak. A lenyeg, hogy minden eleme egy tombbot tartalmazzon, tehat a candidate[0]={1,2,3}, candidate[1]={8,9} , esetleg, ha nincs semmilyen lehetoseg (ergo azon a mezon mar meg van adva a szam), akkor tomb helyett egy egyszeru (int) 0 szerepelhetne. Ugy lenne jo, hogy azokbol a tombbol torolhessem az elemeket, pl ha a bal felso sarokban (ahova eddig mehetett 1,2,3) ki tudom zarni a 3-ast, akkor torolhessem a tombbol, igy candidate[0]={1,2} maradna. Eddig valahol itt tartok, mukodni mukodik, csak nemtudom, hogy az int[][] tombbol lehet-e torolni elemeket..public static int[][] candidates() { //kigeneralja a tombot a lehetseges szamokkat
int[][] cand = new int[81][] ;
for (int i = 0; i < 81; i++) { //vegigmegy a sudoku[] tombon
if (sudoku[i] != 0) { //ha a szam mar meg van adva, akkor 0-t allit be
cand[i] = new int[1] ;
cand[i][0] = 0 ;
} else { //ha a szam nincs megadva, azaz =0
int[] tmp = getCand(i) ; //getCand ellenorzi, hogy az adott mezoben mely szamok lehetnek (sort es oszlopot nezi csak)
cand[i] = new int[tmp.length] ;
cand[i] = tmp ;
System.out.println(cand[i][1]) ;
}
}
return cand ;
}
es itt lenne jo, ha pl a cand[0]-ban levo tombbol tudnek torolni..C-ben vectoroztam anni, most is probaltam ArrayList-ezni, csak nemigazan tudtam deklaralni ugy, hogy az adott valtozom minden eleme egy tombbot tartalmazzon..igy roviden ennyi a problemam -
Davs
tag
Hmm esetleg egy ilyen ArrayList-ceptionnek van ertelme?
ArrayList<ArrayList<int[]>> var = new ArrayList<ArrayList<int[]>>() ;
szoval ahogy en ertelmezem, a var egy ArrayList, ami ArrayList<int> -et fog tartalmazni..
Viszont ami most nem vilagos, hogy hogy erem el az egyes elemeket
var.get(0)-val pl elernem a tombot, ami az elso elem tartalmazott.. ezt most hozza kell rendelnem egy masik ArrayList<int[]>-hez, es ujra .get()-el kell elerni az egyes elemeket (1,2,3...), vagy van egyszerubb megoldas is?[ Szerkesztve ]
-
Davs
tag
De, tutira tul van bonyolitva..igazabol osszesitve kell egy 81 nagysagu tarolo (9*9), aminek minden eleme lehet 0, vagy egy tomb es ennek a tombnek a merete lehet 1-tol 9ig es lehessen barhonnan torolni belole Mondjuk most, hogy igy megfogalmazta, lehet eleg lenne egy tarolo, ami vector<int>-eket tarolna siman. C++-ban egyszeruen lehetett .push_back()-al hozzaadni, es .erase()-szel tetszoleges elemet torolni belole..talan itt is mukodik ez utananezek...most mar csak akkor az a kerdes, hogy azt a 81db vector<int>-et miben taroljam
Amugy ha lattok valami esszerubb leirast a sudoku problema megkozeliteserol, akkor nyitott vagyok mindenre
-
Davs
tag
válasz Chipi333 #2605 üzenetére
Koszi, osszehoztam vegul minden lett benne Vegulis lett egy Candnum classom, benne egy privat List<List<Integer>> list = new ArrayList<List<Integer>>() ;
list.size() az inicializalas utan 81, mindegyik eleme vagy 'null', vagy egy List<Integer> a lehetseges szamokkal..ha esetleg erdekel, feltehetem a kodotMeg egy masik dolog..A CandNum classon belul van egy setCand(i) //i->0-80 metodus, ami minden egyes mezohoz kiszamolja a lehetseges szamokat, es ha valahol csak 1db van, akkor azt automatikusan beirja a sudoku[] tombbe (ahol az eredeti szamok vannak).
Az erdekelne, milyen modszerrel lehetne megviszgalni, hogy egy parancs(konkretan a setCand) lefuttatasa utan, valtozott-e egy int[] tomb (konkretan a sudoku[] tomb). Elso gondolatom, hogy osszeadom az elemeit..esetleg van gyorsabb megoldas? Arra kell, hogy amig valtozik a sudoku[] tomb, addig futtatnam a setCand() metodust. Foleg bonyolultabb sudokuknal feltetelezem, hogy tobbszor is le fog futni, ezert erdekelne a legkevesbe eroforrasigenyes megoldas[ Szerkesztve ]
-
Davs
tag
Sikerult osszehoznom a sudoku solvert, http://www.sudoku.ws/extreme-5.htm errol az oldalrol is megcsinalja az extreme puzzleket is, gepemen szinte rogton vegez, androidon (gt540 7227-es 600mhz-s procival) ugy ~1,5-2masodperc alatt kesz, szoval kedzhetem kicsit optimalizalni a kodot
Amugy a vegcel az, hogy androidon lefenykepezem a sudoku feladvanyt, felismertetem vele es vegul megoldom -
Davs
tag
válasz ArchElf #2612 üzenetére
Ha ez nekem szolt, akkor elmondom, hogy bruteforce-ot csak vegso esetben hasznaltam, miutan az elotte levo 2 modszer nem tudta befejezni az egesz sudoku-t. Feltehetem a java kodot, amint lesz egy kis idom dobok bele par kommentet..Azutan az a java kod ment 1az1-ben szinte at androidba is..
-
Davs
tag
válasz ArchElf #2621 üzenetére
Igazabol 3..az elejen, amig talal valamit fut a "single candidate" es a "hidden single candidate", aztan ha ezek lefutottak es meg nincs befejezve a sudoku akkor max 3 bruteforce
...erjek haza melobol es feldobom..de amugy nagyon alpha fazisban van a dolog, epphogy mukodik egydimenzios tombben van jelenleg a sudoku tabla, azt mindenkeppen at kellene csinalni ket dimenziosra, szerintem ugy gyorsulnanak a muveletek..bar nem nagy eroforrasigenyes dolog egydimenziosbol kiszamolni, hogy melyik elem tartozik ugyanabba a sorba,oszlopba,blokkba (szerintem..1-2 osztas, kivonas,% a for ciklusban)
[ Szerkesztve ]
-
Davs
tag
válasz ArchElf #2623 üzenetére
Tudnal linkelni egy oldalt, ahol ilyen very hard, vagy extreme sudokuk vannak megoldasokkal egyutt? En neztem egy oldalon extreme puzzleket es siman megoldotta..telefonomon rajta van az app, ki tudom probalni
http://www.extremesudoku.info/sudoku.html Innen probaltam egy extreme-t, ~1,5 sec korul megis oldotta
[ Szerkesztve ]
-
Davs
tag
válasz Vadászmenyét #2875 üzenetére
Windowsos jegyzettob helyett probald meg inkabb pl a Notepad++ t
-
Davs
tag
válasz Vadászmenyét #2884 üzenetére
Proba:
nyisd meg a windows parancssort, navigalj el a .class fajlodat tartalmazo konyvarhoz, majd:
java -cp . Salution@kispx
Igen, class nelkul kell megadni, de o is ugy adta meg "...java Saluton -t irtam parancsnak ..."[ Szerkesztve ]
-
Davs
tag
válasz Vadászmenyét #2920 üzenetére
Javaslom ezentul a java -cp . MyClass stilusu futtatast.
a -cp a CLASSPATH-ot allitja be "."-ra, vagyis az aktualis konyvtarra -
-
Davs
tag
Hali!
Windowson az Environment Variables-en belul van (user es system-en belul is) egy CLASSPATH valtozom, aminek a tartalme: .;D:\workspace\Java
D:\workspace\Java legyen ezentul <path><path>\com\davsx\util\Print.java tartalma:
package com.davsx.util ;
import java.io.* ;
public class Print{
public static void print(Object o) {
System.out.println(o) ;
}
public static void print() {
System.out.println() ;
}
public static void printnb(Object o) {
System.out.print(o) ;
}
}Ezt <path> alol a javac com\davsx\util\Print.java paranccsal leforditottam .class-ra (amit ott is hagytam)
<path>\PrintTest\PrintTest.java tartalma:
import static com.davsx.util.* ;
public class PrintTest
{
public static void main(String[] ars){
print("Hello") ;
}
}Es amikor probalnam a <path> alol parancssorbol futtatni a javac PrintTest\PrintTest.java parancsot (vagy akar a javac -cp . PrintTest\PrintTest.java -t) a package com.davsx not found hibauzenetet kapom. Mit csinalok rosszul?
[ Szerkesztve ]
-
Davs
tag
1.
- Miért fér hozzá a tartalmozó osztály?
- Itt most egymasba agyazott Classokrol van szo..Class classon belul (ez nem oroklodes!). Vegyunk pl egy sima public classot. Te a classon kivul tudsz a classbol objectet csinalni, hozzafersz a public valtozoihoz/metodusaihoz, a privathoz viszont nem! A privatot csak a class/object maga tudja hasznalni es ha ugy akarja az isten akkor kozvetlenul te is (egy public metodus a classon belul ami hozzaferest ad a privat valtozohoz). Namost ha egy class tartalmaz egy masik privat classot, akkor ahhoz is csak o fer hozza kozvetlenul.
public class A{
private class B{}
}
Leegyszerusitve vehetjuk ugy, hogy a B class az Aclass sajatja, tehat hozzaferhet.2.
http://stackoverflow.com/questions/70324/java-inner-class-and-static-nested-class
Az elso valaszban van leirva peldaval, hogy hogyan ferhetsz hozza. Ha sima inner class-bol akarsz objektumot csinalni, akkor ha jol tudom eloszor kell egy object-et csinalnod a kulso classbol es csak utana tudsz a belsobol, mert a belso csak a kulson belul "el". Static-ot meg talan tudsz siman Kulso.Belso valtozo = new Kulso.Belso() ;3. passz Amugy azt polymorfizmusnak hivjak, amikor egy alosztalyt az ososztalyanak tekinted. Viszont igy hirtele fogalmam sincs, mi tortenik, ha privat class orokol az allattol..privat classbol egyaltalan lehet objektumot csinalni?
4. Tudtommal privat dolgokat NEM orokolnek az alosztalyok. Ha maga az ososztaly privat, akkor lehet ott dob hibat, amikor az alosztaly akar orokolni (tipp).
Protected egy olyan privat dolog, amit lehet orokolni, de kivulrol szinten nem fersz hozza.5. Amennyire tudom, egy classon belul alapbol minden privat.
-
Davs
tag
Java concurrency . Az elso link jonak tunik, az a hivatalos dokumentacio (ha jo angolul)
Amugy minden GUI-nal ugy van, hogy azon a szalon, ahol a JFrameket stb- t csinalod nem szabad komolyabb, sokaig tarto dolgokat csinalni, mert az igy leblokkolja a GUI-t (ami igy nem tudja ellenorizni, hogy tortent-e uj Event -billentyulenyomas, egerklikk, progressbar changge- stb.
[ Szerkesztve ]
-
Davs
tag
Hali!
A kovetkezo dologra szeretnek rakerdezni:PetCreator:
public abstract class PetCreator {
public abstract List<Class<? extends Pet>> types();
}ForNameCreator:
public class ForNameCreator extends PetCreator {
private static List<Class<? extends Pet>> types =
new ArrayList<Class<? extends Pet>>();
}A PetCreatorban a types() egy abstract metodus, nem? Akkor hogy lehet, hogy a ForNameCreator-ban mint sima field szerepel?
-
Davs
tag
PetCreator:
//: typeinfo/pets/PetCreator.java
// Creates random sequences of Pets.
package typeinfo.pets;
406
Thinking in Java
Bruce Eckel
import java.util.*;
public abstract class PetCreator {
private Random rand = new Random(47);
// The List of the different types of Pet to create:
public abstract List<Class<? extends Pet>> types();
public Pet randomPet() { // Create one random Pet
int n = rand.nextInt(types().size());
try {
return types().get(n).newInstance();
} catch(InstantiationException e) {
throw new RuntimeException(e);
} catch(IllegalAccessException e) {
throw new RuntimeException(e);
}
}
public Pet[] createArray(int size) {
Pet[] result = new Pet[size];
for(int i = 0; i < size; i++)
result[i] = randomPet();
return result;
}
public ArrayList<Pet> arrayList(int size) {
ArrayList<Pet> result = new ArrayList<Pet>();
Collections.addAll(result, createArray(size));
return result;
}
} ///:~ForNameCreator:
//: typeinfo/pets/ForNameCreator.java
package typeinfo.pets;
import java.util.*;
public class ForNameCreator extends PetCreator {
private static List<Class<? extends Pet>> types =
new ArrayList<Class<? extends Pet>>();
// Types that you want to be randomly created:
private static String[] typeNames = {
"typeinfo.pets.Mutt",
"typeinfo.pets.Pug",
"typeinfo.pets.EgyptianMau",
"typeinfo.pets.Manx",
"typeinfo.pets.Cymric",
Type Information
407
"typeinfo.pets.Rat",
"typeinfo.pets.Mouse",
"typeinfo.pets.Hamster"
};
@SuppressWarnings("unchecked")
private static void loader() {
try {
for(String name : typeNames)
types.add(
(Class<? extends Pet>)Class.forName(name));
} catch(ClassNotFoundException e) {
throw new RuntimeException(e);
}
}
static { loader(); }
public List<Class<? extends Pet>> types() {return types;}
} ///:~ -
Davs
tag
Hi!
Elkezdtem olvasgatni a concurrency temarol es lenne egy kerdesem. Sokszor van emlite a szovegben a single processor - multiple processor dolog. Egy ketmagos proci most akkor melyik csoportba tartozik? A ket mag tekintheto ket kulonallo processzornak? -
Davs
tag
class A {}
class B extends A {} -> ez oroklodes
class C {
public A AObject = new A() ; -> ez kompozicio
}B objektum eseten minden public es protected dolgot (metodust es valtozot) oroklunk az A-bol. B-ben tudunk hozzatenni az A-bol orokolt dolgokhoz, de altalanosan elmondhato, hogy ami A-ban van (es public) az a B-ben is ott van, ezert lenyegeben mondhatni, hogy a "B" class "A" tipusu is. Mivel a B az A-tol orokol, az alabbi kodreszlet valid:
A Avaltozo = new B() ;Kompozicio eseten nem csinalhatsz ilyent: A Avaltozo = new C() ; -> mivel a C nem orokol az A-tol, egyszeruen a C csak tartalmaz egy A-t.
Oroklodes = "olyan, mint" -> B orokol A-tol -> B olyan, mint az A ( B az A altipusa)
Kompozicio = "van neki" -> C-ben van "A-kompozicio" -> C-nek van A-jaNemtudom, mennyire vilagos ebbol, szerintem rossz tanar lennek, de ha mar ennyit utottem a gombokat, azert elkuldom, hatha van benne valami ertheto is (+ remelem nem tevedtem nagyot sehol se)
-
Davs
tag
válasz Dave-11 #3239 üzenetére
Egy intefesz csak definialja a metodusok neveit. Ha az osztalyod implementalja az interfesz, akkor az osztalynak definialnia kell MINDEN metodust, ami az interfeszben volt. Ahogy az elottel szolo peldajaban is latod, a MyService interfeszben csak a metodusok neve van definialva. A MyServiceImpl osztaly implementalja a MyService interfeszt, ezert implementalnia kell a get/setSomething metodusokat.
Ez ez egesz iterfeszes dolog pl arra jo, hogy ellenorizni tudod, hogy egy osztaly implementalja-e az adott interfeszt, es ha igen, akkor biztosan tudod, hogy az osztaly tartalmazza az interfeszben definialt metodusokat stb.
-
-
Davs
tag
Hali!
Singleton osztalyokkal es GC-vel kapcsolatban lenne egy kerdesem..Ha van egy osztalyom, pl
public MyClass {
private static MyClass myClassInstance = null ;
private MyClass() {}public static MyClass getInstance() {
if(myClassInstance == null) { myClassInstance = new MyClass(); }
return myClassInstance ;
}
}Naugye most az osztalynak van referenciaja sajat magara. GC amennyire en tudom addig nem torol egy objektumot, amig van ra valahol strong reference. Mi a helyzet ebben az esetben? Mikor fogja a GC torolni az osztaly? Van kulonbseg az kozott, hogy egy osztalynak van referenciaja magara es akozott, hogy mas osztalynak van referenciaja az adott osztalynak?
-
Davs
tag
válasz RaPiDsHaRe #3386 üzenetére
Szerintem CLASSPATH hiba..Letre kell hozni windowson egy CLASSPATH nevu enviromental variablet, aminek az erteke "." (" nelkul). Sajatgepen jobbklikk -> Properties -> Advanced system settings es a felugro ablak aljan ott a gomb
Új hozzászólás Aktív témák
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- -51% HP EliteBook 840 G8: i7 1165G7,32GB RAM,1TB NMVe SSD,Iris Xe,IR kam.+ujj.olv.,vil.MAGYAR bill.
- 1.250.000 FT helyett 940.000 FT !! MacBook Pro 16" M3 Pro 12CPU / 18GPU / 18GB / 512 SSD
- RTX 2080TI ROG STRIX GAMER PC
- AKCIÓ !! M3 Chip - MacBook Pro 14" 8C CPU / 10C GPU / 8 GB/ 1 TB / Bontatlan / Magyar
- Tidradio td-h3 akkumulátor