- Fórumok
- Szoftverfejlesztés
- Java programozás
- (kiemelt téma)
- Fotók, videók mobillal
- Google Pixel topik
- Huawei Watch Fit 5 Pro - jó forma
- Xiaomi 17 - még mindig tart
- A Sony bemutatta eddigi legjobb és legdrágább zajszűrős fejhallgatóját
- Szívós, szép és kitartó az új OnePlus óra
- Xiaomi 17 Ultra - jó az optikája
- Yettel topik
- Xiaomi Watch 5 - kínai időszámítás
- Bemutatkozott az Oppo kamerás csúcsmodellje
-
Fórumok
Mobilarena - mobil fórumok
Okostelefonok Mobiltelefonok Okosórák Autó+mobil Üzlet és Szolgáltatások Mobilalkalmazások Tartozékok, egyebek Mobilarena blogokPROHARDVER! - hardver fórumok
Notebookok TV & Audió Digitális fényképezés Alaplapok, chipsetek, memóriák Processzorok, tuning Hűtés, házak, tápok, modding Videokártyák Monitorok Adattárolás Multimédia, életmód, 3D nyomtatás Nyomtatók, szkennerek Tabletek, E-bookok PC, mini PC, barebone, szerver Beviteli eszközök Egyéb hardverek PROHARDVER! BlogokIT café - infotech fórumok
Infotech Hálózat, szolgáltatók OS, alkalmazások SzoftverfejlesztésGAMEPOD - játék fórumok
PC játékok Konzol játékok MobiljátékokLOGOUT - lépj ki, lépj be!
LOGOUT reakciók Monologoszféra FototrendFÁRADT GŐZ - közösségi tér szinte bármiről
Tudomány, oktatás Sport, életmód, utazás, egészség Kultúra, művészet, média Gazdaság, jog Technika, hobbi, otthon Társadalom, közélet Egyéb Lokál PROHARDVER! interaktív
Új hozzászólás Aktív témák
-
Gyuri16
senior tag
"An unmodifiable collection is not necessarily immutable. If the contained elements are mutable, the entire collection is clearly mutable, even though it might be unmodifiable. For example, consider two unmodifiable lists containing mutable elements. The result of calling list1.equals(list2) might differ from one call to the next if the elements had been mutated, even though both lists are unmodifiable. However, if an unmodifiable collection contains all immutable elements, it can be considered effectively immutable. "
-
Gyuri16
senior tag
Android vonalon én java 8-nál tetőztem. Kotlinban ez pl. így működik:
listOf(...) és mapOf(...) ha final kell és
mutableListOf(...) és mutableMapOf(...) ha mutable kellAz List.of szintén List típust add vissza, csak gondolom dob egy csinos UnsupportedOperationException-t ha add-ot hívsz az outputra.
igen, bovebben le van irva a dokumentacioban
Collection
ListHelyesen unmodifiable-nek kellene hivni, mert attol fuggoen mi van a kollekcioban az elemeket lehet akar valtoztatni.
-
Gyuri16
senior tag
[link]
An "In" Variable An "in" variable serves up data to the code. Imagine a copy method with two arguments: copy(src, dest). The src argument provides the data to be copied, so it is the "in" parameter.
An "in" variable is defined with an upper bounded wildcard, using the extends keyword.Ott meg a bemenet consumer-re super-t ír?
Itt csak a megnevezesekben van kis kavarodas. Es abban, hogy a mapper fuggvenynel a Function volt generikus, itt pedig a src es dest valtozok (tipikusan valamilyen Collection).
A valtozok felhasznalasat kell nezni. A src egy Collection, ebbol a copy fuggveny olvasni fog ("The src argument provides the data to be copied"). Tehat a src egy producer.
A dest valtozo az eredmeny, ebbe a fugveny irni fog, tehat consumer. "the dest argument accepts data" -
Gyuri16
senior tag
<R> Stream<R>map(Fucktion<? super T,? extends R> mapper)ilyen esetben nem sérül a clean code elmélete?
Előző példánál maradva e -> e.getValue0()
miért? super T
az első type pataméter és miért? extends R
a második?vagy kár ezen filózni, elég "bután", rutinból használni ezeket a fucktional interface-ket és lambdákat?
Ha nem akarsz rajta gondolkodni, akkor eleg megjegyezni hogy "Producer extends Consumer super" - PECS.
mapper fuggveny elso parametere a bemenet, ez consumer. A masodik az eredmeny ez a producer.
Ha erdekel bovebben, akkor lehet itt kezdeni: [link]
Igaz collectionokrol van szo, de a lenyeg ugyanaz.map fuggvenynel maradva, vegyunk egy konkret mapper implentaciot.
mapper fuggveny parametere egy valtozo. Azt akarod, hogy a valtozo el tudjon tarolni egy T tipusu objektumot. Milyen lehet a valtozo tipusa? Nyilvan lehet T. Lehet-e T-tol leszarmazott osztaly? Nem, mert akkor nem tudna egy T tipusu objektumot tarolni (pl. Integer valtozoba nem lehet Object-et tarolni). Lehet-e T elodje? Igen, altalanosabb tipusu valtozoba lehet leszarmazott osztalyt kuldeni. (ismet: Object-be lehet Integert). Ezert super.Nezzuk a mapper fuggveny eredmenyet. Itt azt szeretned, ha egy R tipusu valtozoba el lehetne menteni.
R eredmeny = mapper(bemenet);
Milyen osztalyokra igaz ez? R lehet. R elodje nem lehet (Integerbe Object-et). R-tol leszarmazott lehet. Ezert extends.Ha eloszor foglalkozol ezzel, kicsit zavaros lehet. Ajanlom, hogy probald ki egy egyszeru A->B->C hierarchian Collectionokkel (ami a linkben van).
mod: amig irtam, nyilvan megeloztek
most mar itthagyom, hatha segit a magyar verzio. -
Gyuri16
senior tag
Rosszul kérdeztem, rossz példával

Egy osztályban van 1 int x koordináta. Ennek bármilyen értéke lehet Integer.MAX_VALUE és Integer.MIN_VALUE között.
Én csak azt látom eddig csak a getter/setter előnyének hogy ha 100 helyen olvassák és 1 helyen írják akkor könnyű megtalálni azt az 1 módosítási helyet.
Hátránya hogy lassabb mert van közben egy metódus hívás.Hátránya hogy lassabb mert van közben egy metódus hívás.
Nem feltetlenul, compiler ilyen dolgokat tud optimalizalni.
Az elonyokrol mar irtak a tobbiek. Ha bovebben erdekel nezz utana valamilyen objektumorientalt programozasrol szolo konyvben/cikkben mirol szol az encapsulation.
Ezeknek az OOP elveknek az elonye altalaban akkor latszik, ha az ember valami bonyolultabbat csinal. Vagy ha az eredetileg egyszeru osztalyokba uj dolgot kell hozzaadni. Ilyenkor elonyos ha mar az elejetol ugy volt irva a kod, hogy kesobb konnyu legyen valtoztatni. Viszont nyilvan tulzasba esni se jo, felesleges tulbonyolitani egy egyszeru kodot csak azert, mert egyszer lehet hogy szukseg lesz ra.
Peldadhoz visszaterve: ha letrehoznal kesobb egy olyan osztalyt, ahol az x koordinata erteke csak egy kisebb intervallumbol lehet, akkor sokkal egyszerubb lesz megoldanod, ha a kodban mar van egy setter. Anelkul minden egyes helyet ahol uj erteket allitasz be at kell irnod.
-
Gyuri16
senior tag
Sziasztok!
Egy programot kellene készítenem java nyelvben ami úgy néz ki hogy egy térképet használnék fel és ehhez szeretnék készíteni mondjuk checkboxokat, amelyeket kijelölve csak azok a dolgok jelennek meg a térképen amit kijelöltem. Ehhez kellene nekem valami olyan google által vagy bármely cég által készített szabadon felhasználható térkép/térképkivágat. Tudtok ebben segíteni nekem? Ha valami nem tiszta, hogy mit szeretnék akkor kérem szóljatok és pontosítok

Ha 3D Google Earth-szeru program a cel, akkor a NASA WorldWind is meger egy probat: [link]. A leirasbol nem vilagos mit szeretnel pontosan csinalni.
-
Gyuri16
senior tag
azokat az instrukciókat kaptam, hogy nem párhuzamosan futnak a szálaim, mert a run metódusom törzse szinkronizált blokkban van, ehelyett azt a részt kellene szinkronizált blokkba tenni, ami módosítja az egyenleget.
illetve azt kaptam még, hogy legyen az egyenleg static.akkor csak elég a staticot beírni pluszba. a párhuzamosság megoldására tudtok adni valami ötletet?
hat akkor legyen static.. szabad tudni hol tanitjak ezt? (akar privatban is)
de akkor ne konstruktorban allitsd be az erteket, hanem meg az elott, hogy letrehoznad az elso peldanyt.masik kerdesre: synchronized blokkot csak oda tedd ahol hozzafersz a valtozohoz, ne az egesz run metodusra
-
Gyuri16
senior tag
static valtozokat csak indokolt esetben illik hasznalni (ez nem az).
helyedben letrehoznek egy Egyenleg osztalyt, amibol a program elejen letrehoznek egy peldanyt, amit aztan konstruktorban atadnam a Beadando objektumoknak. az egesz szinkronizacios moka pedig ebben az Egyenleg osztalyban lehetne. Termeszetesen ez csak egy lehetoseg, jobb lenne, ha magad talalnad ki az alapjan amit tanitottak.
magyar valtozonevekkel szerintem nincs semmi gond, amig nem probalsz ekezeteket beletenni.
-
Gyuri16
senior tag
igen.
az elso valaszomban is irtam, hogy most minden ugyfelnek/szalnak sajat egyenlege van. a feladat lenyege, hogy egy valtozohoz ferjen hozza az osszes szal es biztositsd, hogy korrekt modon irjak/olvassak a tartalmat. probald meg parszor lefuttatni a programod, es figyeld az egyenleg valtozasat: lesznek benne ugrasok.megoldani tobbfelekepp lehet, ugyhogy ajanlom nezd at, hogyan csinaltatok hasonlot - egy valtozohoz hozzaferni tobb szalbol.
mod: a program vege kiiratast a main fuggvenybe tedd ne a szalakba
-
Gyuri16
senior tag
ArrayList<Beadando> felhasznalolista = new ArrayList<Beadando>();
for (int i=1; i<=felhasznalok_szama; i++) {
felhasznalolista.add(new Beadando(kezdeti_egyenleg));
}
for (int i = 0; i < felhasznalolista.size(); i++) {
felhasznalolista.get(i).start();
}
for (int i = 0; i < felhasznalolista.size(); i++) {
felhasznalolista.get(i).join();
}így?
még így is össze-vissza fut le
ugy jo.
ez helyett:
if(rand_szam2 > i_kezdet ){
i_kezdet-=i_kezdet;
}else{
i_kezdet-=rand_szam2;
System.out.println("kivesz: " + rand_szam2);
System.out.println("Új egyenleg: "+ i_kezdet);
}inkabb igy:
if(rand_szam2 > i_kezdet ){
i_kezdet-=i_kezdet;
}else{
i_kezdet-=rand_szam2;
}
System.out.println("kivesz: " + rand_szam2);
System.out.println("Új egyenleg: "+ i_kezdet); -
Gyuri16
senior tag
el kell menteni a letrejovo objektumot egy valtozoba. Ha csak egy objektumot hoznal letre akkor igy nezne ki a main fuggvenyed vege:
Beadando beadando = new Beadando(kezdeti_egyenleg);
beadando.start();
beadando.join();neked ugyanezt kell megcsinalnod, csak ciklusban. Letrejovo objektumok referenciait nem egy sima valtozoban fogod tarolni, hanem egy listaban. Tehat az elso ciklusban letrehozod az objektumokat, eltarolod egy listaban es meghivod a start() fuggvenyt. Miutan mindet elinditottad egy masik ciklusban vegigmesz a listan es mindegyikre meghivod a join() fuggvenyt.
-
Gyuri16
senior tag
Sziasztok,
múlt hét után ismét megjelenek egy kérdéssel. az alábbi a feladat:Hozz létre egy osztályt Bankszamla néven. Parancssori argumentumként várja a bankszámla kezdeti egyenlegét és a számla felhasználóinak számát.
Hozz létre minden felhasználónak egy külön szálat.
A következőt ismételd 5-ször:
- véletlenszerűen a felhasználó vegyen ki/rakjon be egy véletlenszerűen generált összeget a számlára
- várjon 1-3 másodpercet, majd kezdje újraMinden tranzakciónál írd ki a tranzakció típusát, az összeget, illetve az új egyenleget. Pl.: Kivesz, összeg: 533, uj egyenleg: 313
A számla egyenlege soha nem lehet kevesebb, mint 0 Ft. Ha valaki többet szeretne kivenni, mint a számlaegyenleg, akkor a számlán levő teljes összeget vegye ki, de csak annyit. Ha üres számláról szeretne kivenni egy összeget, akkor továbbra is 0 marad a számlaegyenleg. Ügyelj a konkurens hozzáférésből eredő problémák kiküszöbölésére!Várd meg, míg az összes szál lefut, majd írd ki a képernyőre a következő üzenetet: "A program befejeződött".
itt a kódom:
package beadando;
import java.io.*;
import java.util.*;
import java.util.logging.Level;
import java.util.logging.Logger;
public class Szalak {
public static void main(String[] args) throws Exception {
int kezdeti_egyenleg = Integer.parseInt(args[0]);
int felhasznalok_szama = Integer.parseInt(args[1]);
//boolean kesz =false;
for (int i=1; i<=felhasznalok_szama; i++) {
new Beadando(kezdeti_egyenleg).start();
}
for (int i=1; i<=felhasznalok_szama; i++) {
new Beadando(kezdeti_egyenleg).join();
}
}
}
class Beadando extends Thread {
Random rand = new Random();
private int i_kezdet;
//private boolean kesz;
public Beadando(int kezdeti_egyenleg) {
this.i_kezdet = kezdeti_egyenleg;
//this.kesz = kesz;
}
@Override
public void run() {
synchronized (Szalak.class) {
//int x = i_kezdet;
for(int j=1; j<=5;j++){
int rand_berakvagykivesz = rand.nextInt(2);
if(rand_berakvagykivesz == 0)
{
int rand_szam = rand.nextInt(200000);
i_kezdet+=rand_szam;
System.out.println("berak: " + rand_szam);
System.out.println("Új egyenleg: "+ i_kezdet);
}else if(rand_berakvagykivesz == 1){
int rand_szam2 = rand.nextInt(200000);
if(rand_szam2 > i_kezdet ){
i_kezdet-=i_kezdet;
}else{
i_kezdet-=rand_szam2;
System.out.println("kivesz: " + rand_szam2);
System.out.println("Új egyenleg: "+ i_kezdet);
}
}
try {
Thread.sleep(1000);
} catch (InterruptedException ex) {
Logger.getLogger(Beadando.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}
}a hiba, hogy ha mondjuk 2 lesz a felhasználók száma, akkor ugye 10 szer kellene berakni vagy kivenni, mert mindkét esetben a for ciklus a run-ban 5ször fut le, viszont nálam van hogy 6-szor , de lehet hogy 8-szor, tehát össze-vissza. esetleg valami ötlet?
itt a hiba:
for (int i=1; i<=felhasznalok_szama; i++) {
new Beadando(kezdeti_egyenleg).start();
}
for (int i=1; i<=felhasznalok_szama; i++) {
new Beadando(kezdeti_egyenleg).join();
}a masodik ciklusban az elsoben letrehozott beadando objektumokon kellene a join() fuggvenyt meghivni. Igy letrehoz egy uj objektumot, es azon var.
Azon kivul van meg par problema a programmal:
minden szalnak kolon egyenlege van, nem ugyanahhoz a valtozohoz fernek hozza
ez nem tul szep es nem is effektiv: synchronized (Szalak.class) -
Gyuri16
senior tag
az iterator (ami a for-each ciklus mogott van) mindig az aktualis elemet fogja csak megmutatni. Ha szukseged van az elozo elemre, akkor vagy tarold el egy lokalis valtozoban vagy hasznalj klasszikus for ciklust es indexeld az ArrayListet: i, i+1, i-1...
-
Gyuri16
senior tag
sziasztok,
egy SOAP webservicet gyartok, es nem igazan sikerul a kovetkezo: a SOAP request header reszeben kapok parametereket, es ez alapjan szinten a header reszben kell rajuk valaszolnom. Irtam egy SOAPHandlert, amivel hozza tudok ferni a headerhez, de nem tudom osszekapcsolni a request/response parost. A handleMessage fuggveny ugye meghivodik amikor a keres jon be es amikor a valasz megy ki. A kinom az, hogy amikor a valaszt gyartanam mar nem ferek hozza (?) a keres headerjehez.Valaki tudna segiteni, hogyan kell ezt megoldani? Azt lattam, hogy elvileg egy konkret fuggveny parameteret be lehet allitani a WebParam annotacio header attributumaval, de nekem ez tobb fuggvenyre es osztalyra is kellene, tehat jobb lenne az altalam probalt irany (minden service ele rakni csak egy annotaciot, fuggvenyek ne tudjanak rola).
ugy nez sikerul, [link]
SOAPMessageContext put/get.
ez van amikor egy ismeretlen technologiaval kell tegnapra megcsinalni valamit
-
Gyuri16
senior tag
sziasztok,
egy SOAP webservicet gyartok, es nem igazan sikerul a kovetkezo: a SOAP request header reszeben kapok parametereket, es ez alapjan szinten a header reszben kell rajuk valaszolnom. Irtam egy SOAPHandlert, amivel hozza tudok ferni a headerhez, de nem tudom osszekapcsolni a request/response parost. A handleMessage fuggveny ugye meghivodik amikor a keres jon be es amikor a valasz megy ki. A kinom az, hogy amikor a valaszt gyartanam mar nem ferek hozza (?) a keres headerjehez.Valaki tudna segiteni, hogyan kell ezt megoldani? Azt lattam, hogy elvileg egy konkret fuggveny parameteret be lehet allitani a WebParam annotacio header attributumaval, de nekem ez tobb fuggvenyre es osztalyra is kellene, tehat jobb lenne az altalam probalt irany (minden service ele rakni csak egy annotaciot, fuggvenyek ne tudjanak rola).
-
Gyuri16
senior tag
az autoboxing soran meghivott Integer.valueOf cacheeli a kis szamokat, ezert ugyanaz az objektum lesz mind a ketto. Ugyanaz nagy szammal nem fog mukodni.
masik hasonlo:
String a = "alma";
String b = "alma";
System.out.println(a == b); //trueez is egy optimalizacio eredmenye
emvy: a felso hatar allithato: -XX:AutoBoxCacheMax
-
Gyuri16
senior tag
Joy of Clojure cimu konyv. Online nem tudom hirtelen, keress ra.
Zarojelek temaja: ezt en se hittem el eloszor (ezert se foglalkoztam Lisppel sokaig), de az zarojeleket egy ido utan nem latod. Marmint persze latod, de megszokja a szem, csoppet sem zavaro -- es a zarojelezes teszi lehetove a homoiconicity-t, ami kb. semelyik mas nyelvben nem mukodik. Igy sajat nyelvi konstrukciokat is nagyon egyszeruen definialhatsz -- pl. Java-ban nem volt foreach egesz odaig, amig a nyelvnek nem lett resze, Clojure-ben siman csinalhatsz magadnak, ha epp az hianyzik.
En mostanaban mindefelere ezt probalom hasznalni. A hatranya az, hogy nincs statikus tipusellenorzes. A legfobb elonye a konkurens programozas tamogatasa, ami szerintem jobb, mint barmelyik mas nyelvben. A clojure.async library (library, nem nyelvi elem vagy framework!) egy mestermu, ezenkivul az alapveto konkurencia-megoldas az STM (software transactional memory).
koszi, megnezem
-
Gyuri16
senior tag
Teljesen irreleváns, hogy a következő projekt nyelve mi. Olyanokat keress, akik már csináltak vele nagyobb projektet. Szerintem. A többféle paradigma megtanulasara nem jo, mert mindenből van benne egy kicsi. Funkcprogra jobb a Clojure (vagy racket vagy akarmi) meg a Haskell.
Tényleg nem muszáj nekem elhinni, de hidd el :d
ha mar feljott a tema Clojure elkezdesehez tudsz ajanlani jo online anyagot? egy ideje rajta van a listamon, de csak annyit tudok rola, hogy sok irritalo buta zarojel

esetleg ha hasznaltad munkaban is erdekelne mire (ha publikus), ill. miert pont erre esett a valasztas. -
Gyuri16
senior tag
remelem belathato idon belul hasznalhatunk java8-at,
LOL. MI nemrég tértünk át 7-esre, de szerintem pikkpakk lesz abból nyolcas. A fun benne az, hogy egy 6-os kódbázisra kell majd ráhúzni

hat akkor nevetni fogsz: nalunk a kod legnagyobb resze meg 5-os es egyelore nem lehet updatelni. szerencsere utobbi evben en nagyreszt egy uj projekten dolgozok amit 8-assal kezdtunk, de aztan vissza kellett lepni 7-esre (mert JET nem tamogatja meg a 8-ast)
-
Gyuri16
senior tag
Nézd meg, hogy a nagy rendszereket gyártó cégek, akik Scalaztak, hogy állnak vissza Javára vagy valami másra. A Scala problémája az, hogy őrült bonyolult lett a nyelv. Fun megtanulni, es amikor használod, akkor nagyon produktívnak érzed magad. A probléma ott jön, amikor pár főnél nagyobb csapat kezd el dolgozni, és mindenkinek más rész tetszik a Scalabol.
Nekem bejott a Scala, de amikor elkezdtem nézegetni a Scalaz-t meg társait, akkor ezt láttam. Aztán miután hagytam, kezdtek jönni az iparbol is a hírek, hasonló tapasztalatokról. (sok publikus hír is van, de privátban nem publikusbol is van pár sztorim)A Scala a JVM C++-a. Read this.
Egyébként a Clj számomra nagyobb revelacio volt, de persze ízlés dolga..
scala engem is erdekel, en ezt akarom atnezni bevezetokent: [link] aztan ha meg nem unom akkor ezt: [link]. leginkabb csak jatek szinten erdekel, reg nem tanultam valamit just for fun..
munkaban javat hasznalunk, es nem ritkan szeretnek valami kifejezobb nyelvvel dolgozni. remelem belathato idon belul hasznalhatunk java8-at, kivancsi vagyok lambdak es collection streamek mennyire lesznek hasznalhatoak.
-
Gyuri16
senior tag
-
Gyuri16
senior tag
Azért meg lehet oldani simán a thread-safe legyen, általában ezt szoktam használni:
public class Singleton {
private Singleton() { }
private static class SingletonHolder {
public static final Singleton INSTANCE = new Singleton();
}
public static Singleton getInstance() {
return SingletonHolder.INSTANCE;
}
}persze, lehet igy is, csak nem latom ertelmet a lazy init.-nek. Singletonnal mast nem lehet csinalni, csak meghivni a getInstance fuggvenyet, ekkor betolti a classloader es letrejon az objektum is. Te szokod hasznalni az osztalyt anelkul, hogy szukseg lenne peldanyositani?
-
Gyuri16
senior 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?
amig van referencia az objektumra, addig a gc nem torli. Singleton eseteben tobbnyire azt jelenti, hogy amig fut a program addig letezik az objektum is (amig van referencia a classloaderre).
masik dolog: nem ajanlom, hogy igy implementald a singletont, a lazy initialization tobb threades kornyezetben kellemetlenseget okoz. egyszerubb igy
private static MyClass myClassInstance = null ;
helyett
private static MyClass myClassInstance = new MyClass(); -
Gyuri16
senior tag
Ühüm, akkor fontos, hogy konstruktorral hozzam létre

Integer s = 8;
Integer t = 8;
Így meg a kettő ugyanaz lesz... egyébként ilyenkor s és t primitív? Vagy 2 külön hivatkozó változó, ami ugyanarra az Integer objektumra mutat a kupacban?Karma: "A gyakorlatban meg az Integer.valueOf-ban van ez a cache implementáció." Milyen cahce implementáció van ott?
Nekem ez új.Integer s = 8;
ilyenkor autoboxing miatt az Integer.valueOf(int) kerul meghivasra, ami cacheli a -128 tol 127ig terjedo szamokat, hogy gyorsabb legyen:private static class IntegerCache {
private IntegerCache(){}
static final Integer cache[] = new Integer[-(-128) + 127 + 1];
static {
for(int i = 0; i < cache.length; i++)
cache[i] = new Integer(i - 128);
}
}
public static Integer valueOf(int i) {
final int offset = 128;
if (i >= -128 && i <= 127) { // must cache
return IntegerCache.cache[i + offset];
}
return new Integer(i);
} -
Gyuri16
senior tag
Van egy osztályom aminek a konstruktora hív egy eljárást ami szintén az osztályon belül van, de nem fut le, csak így:
public static void main(String[] args) {
Gui g= new Gui();
g.initLoad();
}
}Ha a konstruktorból akarom hívni az initLoad eljárást akkor nem történik semmi:
public class Gui implements ActionListener{
Gui(){
initLoad();
................
}
initLoad(){
................
}
}Biztos valami triviális a válasz, de sajna akkor sem tudom :/.
tudsz mutatni egy minimalis mukodo (lefordithato) programot ahol jelentkezik amit irsz?
-
Gyuri16
senior tag
Elkezdtem a progit, de van egy erdekesseg amit nem ertek, adott az alabbi kodreszlet:
public int readInt() {
int szam = 0;
BufferedReader is = new BufferedReader(new InputStreamReader(System.in));
try{
do{
try{
szam = Integer.parseInt(is.readLine());
break;
}catch (NumberFormatException e){
System.err.println("Kérem csak egész számot adjon meg!");
};
}while(true);
is.close();
}catch (IOException ex){
System.err.println("Nem olvasható a bemenet!");
}
return szam;
}
public int kvizValasztas() {
int sorszam = 0;
do{
sorszam = this.readInt();
if(sorszam > this.elerhetoKvizek.length || sorszam <= 0 ){
System.out.println("Hibás számot adott meg, kérem adja meg újra: ");
}else{
break;
}
}while(true);
return sorszam;
}Hibas bemenet eseten mikor masodjara megy bele a readInt() fuggvenybe, akkor ahelyett, hogy bekerne a szamot belefut a catch agba, miszerint IOException van.
Ha kiveszem az is.Close(); sort, akkor minden ok, de nem ertem, hogy miert, mindig egy uj BufferedReader-t inicializalok, nem a mar korabban lezartbol olvasnek.
is.Close() bezarja a streamet amibol masodjara olvasni akarsz,ezert IOExceptiont kapsz. a stream itt a System.in, amit nem jo bezarni.
en nem csinalnak minden esetben uj BufferedReadert, mert az, ahogy a neve is mondja bufferel. ez azt jelenti, hogy tobbet is olvas(hat) az alatta levo streambol mint amennyi kell, azert, hogy a legkozelebbi olvasasnal keznel legyen az adat. egy streamet egy BufferedReaderrel illik olvasni.
-
Gyuri16
senior tag
Sziasztok!
Tudnátok javasolni valamilyen Java könyvet, ami gyorsan és alaposan elmagyarázza az alapokat? Valami olyan könyv érdekelne, ami SE vagy EE-vel foglalkozik és olyan embereknek készült, akik már programoztak más nyelvekben, de a Java-t most kezdik. Angolul kéne, szóval mindegy, hogy van-e belőle magyar kiadás.(Úgy néz ki, hamarosan Java programozót kell faragnom magamból, lehetőleg nagyon gyorsan
)Bruce Eckel: Thinking in Java
a weboldalon le is lehet tolteni (igaz csak a regebbi verziot) ingyen. az ujabb verzio sem tul uj, viszont elindulni szerintem jo.masik konyv az Effective Java. igaz ezt meg nem olvastam, de szoktak ajanlani. rajta van a listamon

-
Gyuri16
senior tag
Egy ötlet: Feltöltesz egy String típusú tömböt valamilyen szöveggel. Egy ciklussal végigmész a beírt szöveg karakterein (0-tól a tömb méretéig), és minden egyes karakternek megfeleltetsz egy másikat. Ezt eltárolod egy segédtömbben oly' módon, hogy amelyik karaktert vizsgálod, a segédtömböd annyiadik helyére beteszed az olvasott karakternek megfeleltetett karaktert. Így jóeséllyel egy teljesen értelmetlen szöveget kapsz.
Dekódolásnál ugye az a fontos, hogy ismerd a szabályt, ami alapján kódoltál. Ilyenkor megcsinálod ugyanezt a megfeleltetést, csak ebben az esetben a segédtömbön mész végig (0-tól a tömb méretéig), és fordított irányban adod meg az értékeket.Ha elég egy fapados megoldás is, akkor sima switch-case módszerrel megoldhatod.
Gondolom, van sokkal hatékonyabb algoritmus is erre a célra (ezt majd a pro emberek megmondják), de ha neked ebben az esetben nem fontos a futásidő, akkor a fent említett módszer tökéletesen megfelel.
Próbáltam érthetően leírni. Ha mégsem lenne tiszta valami, írj bátran.
nincs sokkal hatekonyabb algoritmus, ha a futasi idot nezed. linearis idonel jobbat nem tudsz csinalni. masik kerdes a biztonsag. ezt a titkositast ha eleg hosszu a szoveg akar papiron is fel lehet torni.
megfelelo kriptografia hasznalata bonyolultabb kerdes, attol fugg a kerdezonek mire kell. ha egy iskolai feladat kezdo programozonak, akkor akar lehet ezt is implementalni, ha viszont tenyleg titkositas a cel, akkor valamilyen szabvanyos algoritmust erdemes hasznalni. -
Gyuri16
senior tag
jdbc kerdesem lenne. van egy date tipusu mezom, amit prepared statementes setDate-el akarok feltolteni, viszont a gond az, hogy igy csak a datumot menti el, az orakat kinullazza. neten azt talaltam, hogy ez igy van jol, viszont nekem kellene oda a pontos ido is (a mezo tipusat nem lehet megvaltoztatni). kiprobaltam setTimestamp-et ugyanerre a mezore, es mukodott is (az idot is elmentette), viszont nem tudom ez mennyire megbizhato. van valakinek tapasztalata ezzel, mit kellene csinalnom?
-
Gyuri16
senior tag
Sziasztok!
Tömbkezelés és feltétel kezeléssel van gondom Java-ban
aRows != bRows nem működik, arra nem dobja ki a hibát, hanem lefut, összeadja a két mátrixotpublic static double[][] addMatrix(double[][] a, double[][] b) {
int aRows = a.length; // arrays' number in matrix
int aCols = a[0].length; // arrays' length in matrix
int bRows = b.length;
int bCols = b[0].length;
if (aCols != bCols && aRows != bRows)
throw new IllegalArgumentException("matrices don't match: " + aCols
+ " != " + bRows);
....}
main(){
double x[][] = { {7, 6, 3}};
double y[][] = { { 5, 4, 6 }, { 5, 6, 7 } };
double z[][] = AddingMatrices.addMatrix(x, y);
}a feltetelbe nem es kell hanem vagy
-
Gyuri16
senior tag
-
Gyuri16
senior tag
lehet. megkeresed az oldal forraskodjaban az appletet (applet, esetleg object tag) azon belul a java allomany nevet (.jar, .class). azt letoltod. ha jar akkor kicsomagolod (zip). a class fajlokat pedig vissza lehet forgatni pl jad-dal (java decompiler).
-
Gyuri16
senior tag
-
Gyuri16
senior tag
Azt azért megcsináltam, hogy a cucc szépen generáljon egy xml-t is, ne csak úgy kiköpjön egy text file-t.
Hasonlít is az eredetire, kivéve abban hogy néhány attribútumnak van egy d: eleje/vége is, tehát például xmlns="http://blbabla" helyett xmlns:d="http://blablaa", vagy ilyen hogy d:type meg d:blob.
Mik ezek a d:-ok? jelentenek valamit?Ilyennek kéne lennie[link]
ilyen amit a programom generál: [link]A kód xml felépítés része meg ilyen:
Document xmldoc=impl.createDocument("http://www.kuju.com/TnT/2003/Delta", "cRecordSet", null);
Element root= xmldoc.getDocumentElement();
root.setAttribute("id", Integer.toString(rnd.nextInt(randomsize)));
Element record= xmldoc.createElement("Record");
Element heightfieldtile= xmldoc.createElement("cHeightFieldTile");
heightfieldtile.setAttribute("id", Integer.toString(rnd.nextInt(randomsize)));
Element x= xmldoc.createElement("X");
x.setAttribute("type", "sInt32");
x.setTextContent(Integer.toString(tileX));
Element y= xmldoc.createElement("Y");
y.setAttribute("type", "sInt32");
y.setTextContent(Integer.toString(tileY));
Element blob= xmldoc.createElement("blob");
blob.setAttribute("size", "65536");
blob.setTextContent(heightfield);
root.appendChild(record);d:type azt jelenti, hogy a d namespace type elementje. xml namespacek nagyjabol ugyanugy mukodnek mint c++ban. egy dokumentumon belul hasznalhatsz tobbet is, ezt kell a gyokerelementben definialni. a default namespace a xmlns es ha tobbet akarsz akkor xmlns:d formaban kell irni. kesobb pedig az elementekre ezzel a nevvel hivatkozol, tehat pl d:type. az hogy konkretan milyen betut rendelsz hozza mindegy, csak a xmlns attributumnak legyen beallitva a megfelelo URI. ha ezt az xml dokumentumot masnak kuldod feldolgozni, akkor jo lenne ha kompatibilisre csinalnad.
javaban az NS vegzodesu fuggvenyekkel lehet megnevezni a hasznalni kivant namespacet -
Gyuri16
senior tag
gondolom eredetileg valamilyen szam tipusu valtozoban van az amibol a hexadecimalis stringet akarod. akkor lehet ilyet:
int i = 1234;
String s = String.format("%08x", i);mod: kicsit egyszerusettem..
-
Gyuri16
senior tag
ahogy nezem mar az osszes programozos topicban megkerdezted, hogy milyen konyvet/kornyezetet ajanlotok kezdoknek xy nyelvhez? pl legutobb egy honapja delphi.. ebben a topicban is mar szoltal hozza, akkor netbeanseztel, most meg megint kerdezed, hogy miben kell java-t kodolni. azt ajanlom, hogy tanuld azt amit suliban nyomatnak. ha jol tudom nalatok java masodikban van. ha elsos vagy akkor csinald azt amit akarnak toled (gondolom c/c++), nem hiszem, hogy ez a jo megoldas, hogy ennyi nyelvbe belekezdesz, de a for ciklusnal nem jutsz tovabb sehol. ha egy c alapu nyelvet megtanulsz jol, akkor szinte az osszeset tudod alapszinten hasznalni. konyvet nem tudok, ha masodikos vagy akkor figyelj oda oran. neten van egy rakas tutorial hello world szintu programokhoz, tovabb meg mar latod mit szeretnel, mi nem megy.
ezt ne vedd tamadasnak, csak fura, hogy ennyi mindent elkezdesz. ha egyet tovabbviszel, akkor tobbe nem kell kezdo szinten kinlodnod a tobbivel. programozni/algoritmikusan gondolkodni tanulj meg, es ne egy konkret nyelvet
-
Gyuri16
senior tag
-
Gyuri16
senior tag
-
Gyuri16
senior tag
-
Gyuri16
senior tag
Valóban nem ez a teljes feladatleírás, az 5x ennyi, csak nem akartam ennyit beírni
Mert csak ez a része nem megy. A boltok nyitását attól az órától kezdve nézzük, amikor az első pizzát eladta (pl 15:44 akkor 15-kor nyitott). Az adatok nincsenek sorban rendezve. Meg elvileg ugye mindig néznem kell a bolt id-t, megjegyezni mikor nyitott, és aszerint nézni tovább, majd ha kell a pizza.txt-ből valami, akkor a pizza_id alapján kikeresem a szükséges adatot. Ezzel az a gond, hogy több száz bolt is lehet akár. Szóval arra gondoltam, létrehozni egy objektumot a kigyűjtött adatok tárolására, egy boltnak egy objektum, és mondjuk ArrayList-ben tárolom őket, majd egy for ciklussal végigmegyek az objektumokon, és megkeresem a kért eredményt. Ez nem tudom mennyire működne, az a baj, hogy a héten öszesen aludtam kb 20 órát, még egy hello world progi is kifogna rajtam... 
"Szóval arra gondoltam, létrehozni egy objektumot a kigyűjtött adatok tárolására, egy boltnak egy objektum, és mondjuk ArrayList-ben tárolom őket, majd egy for ciklussal végigmegyek az objektumokon, és megkeresem a kért eredményt."
ezt irtam en is, csak nem ArrayList, hanem TreeMap (vagy HashTable). amiben a bolt_id a kulcs es (nyitas,feltet,paprika) harmast tarolsz. ez elvileg gyorsabb mintha ArrayListben tarolnad
tehat beolvasod soronkent a dat-ot. mindig megnezed, hogy ilyen boltrol van e mar infod a Mapban, ha igen akkor tudod a nyitvatartast, es nezed a pizzat (ha nem akkor letrehozol egy uj objektumot a Mapban), hozzaadod amit kell es mesz tovabb. vegen egy iteratorral vegignezed. -
Gyuri16
senior tag
Sziasztok, tudnátok segíteni abban, hogyan lehet "összefűzni" egy bináris és egy szöveges fájlt?
Kicsit konkrétan, így néz ki a txt fájl tartalma:
<pizza_id> <pizza_feltetek_szama> <feltetekbol_paprika> <pizza_nev>a .dat tartalma (persze binárisan):
<bolt_id> <pizza_id> <eladas_oraja> <eladas_perce>A feladat: keszitsunk programot, ami megkeresi azt a boltot (<bolt_id>-t), ami a
nyitvatartasanak elso ket orajaban a legkevesebb feltetet adta el osszesen, es
kiirja azt, hogy ez a bolt a nyitvatartasanak masodik (csak a masodik) orajaban
mennyi paprika feltetet adott el. (A program kimenete a konzolra tehat egyetlen
szam!)A program csak az eredmeny szempontjabol relevans adatokat gyujtse!
NEM elfogadhato megoldas az, ha minden adatot beolvas a memoriaba, majd
ott eldonti a problemat.Hát ez lenne, gugliztam én ma egész nap, meg olvastam a java könyvet, de nem jutottam előrébb. beolvasom a txt és dat fájl tartalmát, elvileg össze kéne fűzni valahogy hashtable-el, vagy nem tudom. Esetleg valami link is jó ami ehhez hasonló progit magyaráz el.
ez az egesz feladat? nem vilagos, hogy honnan tudod mikor nyitott a bolt, ill. a fajlokrol jo lenne tudni, hogy valahogy sorba vannak e rendezve az adatok, vagy nem?
a feladatban ott van, hogy nem olvashatod be az egeszet, szoval amit te mondasz nem jo
egyelore ez a legjobb (igazabol egyetlen) otletem:
mesz sorban a .dat fajlodon, megnezed az idopontot, ha benne van az elso ket oraban akkor megnezed pizza_id-t a masik fajlban, onnan megtudod a feltetek szamat es ha a masodik oraban vagy akkor a paprikat is. Amit megtudtal hozzaadod a mar meglevo adatokhoz amit mondjuk egy Mapban tarolhatsz (bold_id, feltet, paprika). vegen atfutod a Mapot, es megnezed hol a legkevesebb a feltet es kiirod a paprikat
ha a .dat fajlod bolt_id szerint sorba van rendezve akkor nem kell az egesz Map, hanem eleg ha megjegyzes az eddig legjobbat, es mindig ahhoz viszonyitasz
ezzel az a gond, hogy ha a txt fajlod nincs valahogy sorbarendezve akkor minden egyes kereses benne akar az egesz fajl atnezeset jelenti. -
Gyuri16
senior tag
Csao!
Az alábbi feladattal bajlódom, még nagyon kezdő vagyok javaban. van egy jsp oldalam amin van egy label meg egy gomb, ha megnyomom a gombot akkor a labelen kiíratott számot növelje. Ha egyszer rányomok a gombra akkor megnöveli egyel de utána marad ugyanaz akárhányszor rákattintok. Ez volna a kód:
<%
int szam = 0;if(request.getParameter("uj") != null)
{
szam++;
}
%><html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
<title>JSP Page</title>
</head>
<body>
<label> <% out.print(szam); %> </label>
<form action ="index.jsp" method="POST">
<input type="submit" value="Növel" name="uj"/>
<br/></form>
</body>
</html>Mit kéne átírnom hogy működjön? Köszi előre is!
ez nem igy mukodik..
jsp egy szerver oldali nyelv, tehat a szerveren fut le, es az eredmenyt elkuldi a bongeszodnek. jelen esetben az tortenik, hogy behivod az oldalt, a szerveren ez lefut: szam=0, mivel a feltetel nem teljesul marad is annyi, ezt kiiratod. ha megnyomod a gombot a szkript ismet lefut a szerveren, tehat szam=0 aztan megnezi az ifet, mivel megnyomtad a gombot ezert eggyel noveli, es ezt ki is irja. a szerver ezutan elkuldi neked a valaszt, es elfelejti hogy volt valamilyen valtozoja. ha ismet ranyomsz a gombra akkor szinten az egesz lefut, onnan hogy szam=0, ezert igy nem fogsz nagyobb szamot kapni.
tobb megoldas van arra, hogy hogyan jegyezz meg valtozokat, ehhez a peldahoz talan a session valtozok illenek leginkabb -
Gyuri16
senior tag
Hello,
egy valószínűleg nagyon egyszerű kérdésem lenne. Nem rég kezdtem tanulni a nyelvet és a következő problémára egyszerűen nem tudok rájönni.
Van egy kódom, ami megvalósítja azt a feladatot, hogy egy adott stringet többször kiír:public class Multi {
public static void main(String[] args) {
int n = 4;
String str = "hi";
String result = "";
for (int i = 0; i < n; i++) {
result += str;
}
System.out.println(result);
}
}Hogyan tudok ennek a kódnak
public class Multi {
public String StringTimes(String str, int n) {
String result = "";
for (int i = 0; i < n; i++) {
result += str;
}
return result;
}
}egy másik osztályban található mainből értékeket adni és kiiratni a végeredményt.
Azaz pl innen:public class Main {
public static void main(String[] args) {
// ????
}
}Köszi a segítséget!
erre vannak a statikus metodusok (static kulcsszo, erre keress ra).
ilyenkor nem kell peldanyositani az objektumosztalyt. ilyenkor csak az osztaly statikus valtozoihoz ferhetsz hozza (ezt ritkan hasznaljuk, leginkabb minden adat a parameterekben van)
konkret pelda igy fog kinezni:public class Multi {
public static String StringTimes(String str, int n) {
String result = "";
for (int i = 0; i < n; i++) {
result += str;
}
return result;
}
}public class Main {
public static void main(String[] args) {
String str = Multi.StringTimes("abc",5);
System.out.println(str);
// System.out.println(Multi.StringTimes("abc",5));
}
}mod: figyelmetlenul olvastam, termeszetesen az egyszeru megoldas letrehozni egy peldanyt belole, ilyenkor nem kell static:
public class Main {
public static void main(String[] args) {
Multi m = new Multi();
String str = m.StringTimes("asdf",5);
System.out.println(str);
}
} -
Gyuri16
senior tag
Lenne pár kérdésem.... Most kezdtem tanulni ezt a nyelvet,és a beolvasással(bill.-ről) kapcsolatban lenne kérdésem.
BufferedReader be=new BufferedReader(new InputStreamReader(System.in));
System.out.println("Kérem az 'a' oldalt:");
String s1=be.readLine();
System.out.println("Kérem a 'b' oldalt:");
String s2=be.readLine();
System.out.println("Kérem a 'c' oldalt:");
String s3=be.readLine();
a=Integer.parseInt(s1);
b=Integer.parseInt(s2);
c=Integer.parseInt(s3);Itt a kódrészlet,ahol egymás után 3szög 3 oldalát kérjük be. Így adta le a tanár a beolvasást.
Hogy kell,pl. olyat,h egymás után olvasom be?
Vagy olyat,hogy egy dárumot szeretnék beolvasni pl.: 2009.4.26 és ezeket feldolgozni.Másik: NetBeans-ben ha programokat írok mindegyiket külön packege-be kell rakni?vagy hogy működik ez? Még nem értem teljesen.
Mert létrehoztam egy projektet és azon belül a default packege-be dolgozok,írtam egy progit az fut. Aztán mikor a másodikat futtatnám (NB-n belül) akkor az első fut.a readline egy sort olvas be, szoval ha azt irod hogy 2009.4.26 es entert nyomsz, akkor azt kapod meg a String-be. Ezt aztan fel lehet dolgozni, attol fuggoen milyen az adat
NetBeans tapasztalatom nincs, de java-ban a package gyakorlatilag egyenlo egy konyvtarral. minden egyes file ami abban a packageban van, tudatja magarol, hogy a package resze (elso sorban package xy). ha aztan ebbol az filebol akarsz egy osztalyra hivatkozni (kivulrol, tehat mas packagebol) akkor package.osztalynev kell. egy program altalaban tobb packagebol all, ez az embereknek segit logigailag csoportositani az osztalyokat.
minden programban egy main metodus celszeru (elvileg lehet tobb is, de meg nem jottem ra mire jo). igy ha uj programot akarsz irni akkor ahhoz egy uj projektet kell csinalnod, uj osztallyal, main metodussal. -
Gyuri16
senior tag
Javában kell metódust írnom faktoriálisszámításhoz, a következő kóddal dolgoztam
public static void main(String[] args)
{
int n;
System.out.println("Kérem a számot:");
n=Input.readInt();
for (int i=1;i<n;i++)
{
System.out.println(fakt(n));
}
}
public static long fakt (int szam)
{
int eredmeny=1;
for (int i=1;i<szam;i++)
{
szam=szam*i;
eredmeny=szam;
}
return eredmeny;
}Lehet nem tiszta a számomra a metódusok használata, de a fakt metódus szam helyére helyettesítődik be a main metódus n értéke?
a fakt egy fuggveny, melynek egy int tipusu parametere van. a main-ben fuggvenyhivasnal az n valtozo erteke at van adva a fakt fugvenynek (ami onnan szam neven ismeri)
-
Gyuri16
senior tag
Üdv!
Egy generikus típusú tömböt szeretnék létrehozni azonban egyszerűen nem tudom, hogyan lehet létrehozni egy ilyen tömböt.
Megnéztem a google-ban és ott ezt írták:T[] pile = (T[]) new Object[255];
Ennek alapján én is megcsináltam:
LinkedList<Pont<E>>[] szintLista = (LinkedList<Pont<E>>[]) (new Object[MAX + 1]);
Azonban futtatásnál az alábbi kivételt dobja:
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.util.LinkedList;Várom a tippeket, hogy mi lehet vele a gond.
-
Gyuri16
senior tag
segitseget szeretnek kerni reflectionnel. suliba irok egy projektet, ami kulonbozo algoritmusokat hasonlit ossze (gyakorlatilag a futasi idejuket meri).
az objektumstruktura ilyen:
AbstractHeap<E>
|
BinaryHeap<E>
na most ha kontkretan van egy ilyenunk:
BinaryHeap<Integer>, akkor annak van egy olyan fuggvenye hogy Insert(Integer e)
namarmost en szeretnek egy tesztelo objektumot, aminek lesz egy referenciaja a heap-re, es megmondom neki melyik metodust (pl Insert) milyen paramerekkel hivja meg, o lefuttatja, es megmondja meddig tartott neki. itt egy kod, hogy mit probaltam eddig:public long Test(String name, Object[] args) {
long t1 = 0, t2 = -1;
Class<?>[] c = new Class[args.length];
for (int i = 0; i < args.length; i++)
c[i] = args[i].getClass();
t1 = System.nanoTime();
heap.getClass().getMethod(name, c).invoke(heap, args);
t2 = System.nanoTime();
return t2-t1;
}itt termeszetesen a heap egy private referencia. hasznalva igy lenne kb:
HeapTester<Integer> tester = new HeapTester<Integer>(new BinaryHeap<Integer>());
long ido = tester.Test("Insert", new Integer[] {4});namarmost itt az a problema (szerintem), hogy a heap.getClass() csak azt tudja, hogy BinaryHeap, es a <Integer> resz elveszik, igyaztan a getMethod mar azt mondja nem talalt olyan Insertet aminek Integer parameterei vannak (java.lang.NoSuchMethodException: heap.BinaryHeap.Insert(java.lang.Integer))
most ugy oldottam meg, hogy a HeapTester osztalyban szetirtam az osszes metodust, amit tesztelni akarok, es csak meghivom azt a fuggvenyt a referencian keresztul, es visszaadom meddig tart, de ez igy nagyon nem szep, illetve eleg komplikalt lenne igy komplikaltabb teszteket (mondjuk 2-3 fajta implementacion hajts vegre sok insertet, deletet stb. es mindegyiknel jegyezd meg az idoket). a kerdes az, hogyan lehetne ezt megcsinalni, hogy mukodjon ahogy en gondoltam?
koszi a segitseget elore is
sorry, kicsit hosszu lett, remelem azert ertheto a gond -
Gyuri16
senior tag
-
Gyuri16
senior tag
szivesen.
az hogy a tied miert ir ki ket szamot egyszeru, nezd meg hogyan vannak az ifekif(szam1>szam2){
if(szam1>szam3)
System.out.println("A legnagyobb szam a "+szam1);
}
else
System.out.println("A legnagyobb szám "+szam3);
//////////////////////////////////////////////////////////////////////////
if(szam2>szam3){
System.out.println("A legnagyobb szam a "+szam2);
}
else
System.out.println("A legnagyobb szam "+szam3);ami a //////// folott van, az egy if, ami alatta egy masik, es mindketto kiirhatja a sajat megoldasat, ezert van ott ket szam
-
Gyuri16
senior tag
helló
lenne egy egyszerű java feladat de nekem nem megy. az a feladat hogy 4 számot be kell kérni billentyűzetről majd ezeket összehasonlítani és a legnagyobbat hiíratni de egymásba ágyazott if elágazásokkal. nekem 3számra sikerült megcsinálni de a +1 szám kifogott rajtam. a feladat holnapja kellene
itt az én verzióm de ez csak 3számot hasonlít össze:
import java.util.Scanner;
public class Legn{
public static void main (String[] args){
Scanner billentyuzet = new Scanner(System.in);
System.out.println("Adj meg 3 számot");
Double szam1= billentyuzet.nextDouble();
Double szam2= billentyuzet.nextDouble();
Double szam3= billentyuzet.nextDouble();
double szam4= billentyuzet.nextDouble();
if(szam1>szam2){
if(szam1>szam3)
System.out.println("A legnagyobb szam a "+szam1);
}
else
System.out.println("A legnagyobb szám "+szam3);
if(szam2>szam3){
System.out.println("A legnagyobb szam a "+szam2);
}
else
System.out.println("A legnagyobb szam "+szam3);
}
}
köszi
amit irtal nekem nem volt jo ( kiir tobb valaszt is..)
en megoldasom a 4 szamra:import java.util.Scanner;
public class Legn {
static void kiir(Double d) {
System.out.println("A legnagyobb szam a "+d);
}
public static void main (String[] args) {
Scanner billentyuzet = new Scanner(System.in);
System.out.println("Adj meg 3 számot");
Double szam1= billentyuzet.nextDouble();
Double szam2= billentyuzet.nextDouble();
Double szam3= billentyuzet.nextDouble();
Double szam4= billentyuzet.nextDouble();
if (szam1 > szam2){ //1>2
if (szam1>szam3) { //1>2, 1>3
if (szam1 > szam4) { //1>2, 1>3, 1>4
kiir(szam1);
}
else { // 1>2, 1>3, 1<=4
kiir(szam4);
}
}
else { // 1>2, 3>=1
if (szam3 > szam4) { //1>2, 3>=1, 3>4
kiir(szam3);
}
else { //1>2, 3>=1, 3<=4
kiir(szam4);
}
}
}
else { // 1<=2
if (szam2 > szam3) { // 1<=2, 2>3
if ( szam2 > szam4 ) { //1<=2, 2>3, 2>4
kiir(szam2);
}
else { // 1<=2, 2>3, 2<=4
kiir(szam4);
}
}
else { // 1<=2, 2<=3
if ( szam3 > szam4 ) { // 1<=2, 2<=3, 3>4
kiir(szam3);
}
else { // 1<=2, 2<=3, 3<=4
kiir(szam4);
}
}
}
}
}probaltam kommentezni es zarojelezni, hogy atlathato legyen, remelem segit
semmi magia nincs mogotte, egyeduli dolog ami hasznalva van, hogy a < tranzitivmod: sajna a tabokat megette a forum, de azert igy is hasznalhato
-
Gyuri16
senior tag
szeretnek irni egy programot, ami egy problemara tobb megoldast tud nyujtani (kulonbozo algoritmusok, amik ugyanazt a celt szolgaljak), es ezeket osszehasonlitani (futasi ido).
ugy kepzeltem el, hogy lesz egy absztrakt osztalyom, amiben benne lesz az osszes funkcio amit hasznalni szeretnek. ezutan megirom a kulonbozo algoritmusokat (mind kulon osztalyban). itt jonne a kepbe egy tesztelo user interface, ahol lehetne valogatni az algoritmusok kozott, es kulon tesztelni oket (bemeno adatokat megadni, stb).
egeszet ugy szeretnem megcsinalni, hogy barki irhasson ilyen algoritmust, es azt is lehessen tesztelni a programomban. vegulis ugy gondolnam, hogy pluginkent kezelne ezeket az osztalyokat, es tudna oket futtatni, listazni (mondjuk egy konyvtarbol). termeszetesen az osszes osztalynak az en absztrakt osztalyomtol kellene orokolnie a fuggvenyeket.
kerdes az lenne, hogy hogyan tudok letrehozni egy fajlt, amit aztan hasznalhatok pluginkent, tehat oda tudom adni a programnak, o felismeri, hogy bizony azt csinalja amit kell, es meg tudja hivni a fuggvenyeit?
(ha van ilyesmire standard eljaras eleg valami link leirasra, de hirtelen google nem segitett, nem igazan tudom mit kellene keresnem) -
Gyuri16
senior tag
ez a hiba szerintem akkor fordulhat elo ha az utolsot tavolitod el igy:
while(seged.kovetkezo!=null) seged=seged.kovetkezo; // ellepdelsz az utolsoigseged.elozo.kovetkezo=seged.kovetkezo; // ez beallitja nullra, jo
seged.kovetkezo.elozo=seged.elozo; // seged.kovektezo == null, ez hibat dob
...aztan lehet hogy valami mas a hiba, de megneznem ezt
-
Gyuri16
senior tag
-
Gyuri16
senior tag
szerintem jo ez igy. az elso ket sor is eleg arra hogy kikeruljon a listabol, es ha mar nem lesz hogyan odajutni akkor mindegy hova mutatnak onnan a elozo es kovetkezo referenciak.
hasznalhatsz LinkedList-et is, az megoldja helyetted. -
Gyuri16
senior tag
mit kell lehuznom ahhoz, hogy eclipseben ctrl+egergomb kombora megkapjam a standard fuggvenyek es classok forraskodjat (a sajatoknal ez mukodik, de hogy mukodjon a java sajatjaira is). most azt irja hogy nincsenek meg neki a forrasfajljai.
-
Gyuri16
senior tag
sziasztok
ahogy azt nemsokára meglátjátok még kezdő java-s vagyok, és hát mondhatni 'elakadtam'.
egy mátrixot szeretnék úgy feltölteni,hogy először oszlopot aztán sort,ahogy az ugye a nagykönyvben meg van írva két egymásbaágyazott for ciklussal,ellenben annak ellenére hogy lefordul a program,futás közben kapok egy hibát. mutatom a kódrészletet ami ehhez tartozik és a hibát is, és ha tudtok, akkor légyszi segítsetek
System.out.print("A mátrix sorainak száma:");
int n = Input.readInt();
System.out.print("A mátrix oszlopainak száma:");
int m = Input.readInt();
int matrix[][] = new int[n][m];
for(i=0;i<=n-1;i++)
{
for(j=0;j<=m;j++)
{
matrix[i][j]=x;
x++;
}
}és az eredmény pedig: A mátrix sorainak száma:1
A mátrix oszlopainak száma:1
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at matrixos.main(matrixos.java:16)a belso for ciklusban a j valtozod 0-tol m-ig fut, de a tombodnek csak m sora van (j<=m-1 kell, mint a kulso ciklusban is)
Új hozzászólás Aktív témák
-
Fórumok
Mobilarena - mobil fórumok
Okostelefonok Mobiltelefonok Okosórák Autó+mobil Üzlet és Szolgáltatások Mobilalkalmazások Tartozékok, egyebek Mobilarena blogokPROHARDVER! - hardver fórumok
Notebookok TV & Audió Digitális fényképezés Alaplapok, chipsetek, memóriák Processzorok, tuning Hűtés, házak, tápok, modding Videokártyák Monitorok Adattárolás Multimédia, életmód, 3D nyomtatás Nyomtatók, szkennerek Tabletek, E-bookok PC, mini PC, barebone, szerver Beviteli eszközök Egyéb hardverek PROHARDVER! BlogokIT café - infotech fórumok
Infotech Hálózat, szolgáltatók OS, alkalmazások SzoftverfejlesztésGAMEPOD - játék fórumok
PC játékok Konzol játékok MobiljátékokLOGOUT - lépj ki, lépj be!
LOGOUT reakciók Monologoszféra FototrendFÁRADT GŐZ - közösségi tér szinte bármiről
Tudomány, oktatás Sport, életmód, utazás, egészség Kultúra, művészet, média Gazdaság, jog Technika, hobbi, otthon Társadalom, közélet Egyéb Lokál PROHARDVER! interaktív
- Fórumok
- Szoftverfejlesztés
- Java programozás
- (kiemelt téma)
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- EAFC 26
- Gumi és felni topik
- NVIDIA GeForce RTX 5070 / 5070 Ti (GB205 / 203)
- VGA kibeszélő offtopik
- Hitelkártyák használata, hitelkártya visszatérítés
- Mibe tegyem a megtakarításaimat?
- Építő/felújító topik
- Fotók, videók mobillal
- Bestbuy játékok
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- További aktív témák...
- Kingston KC3000 PCIe 4.0 NVMe M.2 2TB-os, bontatlan SSD, 2 év garanciával eladó!
- Samsung 990 Pro 1TB-os PCIe 4.0 M.2 NVMe 2280 SSD, bontatlanul, 2 év garanciával eladó!
- ADATA Legend 900 Pro 2TB-os PCIe Gen4 M.2 NVMe 2280 SSD, bontatlanul, 5 év garanciával eladó!
- AMD R7 350X és RX550 VGA kártyák
- Megvigyázott, 3,5 éves, 128 Gb, iPhone 13, 81% akku
- Akció!!! Lenovo ThinkPad T14 Gen1 Ryzen5 4650U Refurbished - Garancia
- iPhone 16 Pro 256GB 91% (1év Garancia)
- Telefon felvásárlás!! iPhone X/iPhone Xs/iPhone XR/iPhone Xs Max
- Használt számítógépek/merevlemezek számlával, garanciával! Ingyen Foxpost/PostaPont!
- Azonnali készpénzes félkonfig / félgép felvásárlás személyesen / csomagküldéssel korrekt áron
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest


most mar itthagyom, hatha segit a magyar verzio.






