Hirdetés

2024. május 2., csütörtök

Gyorskeresés

Útvonal

Fórumok  »  Szoftverfejlesztés  »  Java programozás (kiemelt téma)

Hozzászólások

(#9201) floatr válasza emvy (#9188) üzenetére


floatr
veterán

Ez az oracle hivatalos hitvallása. Nem olvastad? Most jöttek rá, hogy lehet h erre kéne koncentrálni, nem a SOAP-ot nyomni még ezerrel. :D

Amúgy kövezzetek meg, de én a REST-ből implementációból csak a service method regisztrációt, és a message convertert használom. Ez a GET/PUT/POST/DELETE annyira felesleges nekem

(#9202) emvy válasza floatr (#9201) üzenetére


emvy
nagyúr

> GET/PUT/POST/DELETE

Ooooo, akkor az nem REST :)

while (!sleep) sheep++;

(#9203) floatr válasza emvy (#9202) üzenetére


floatr
veterán

Értem én, de mindenki magasról tesz rá, még a framework-ök is :)

(#9204) mobal válasza floatr (#9203) üzenetére


mobal
MODERÁTOR

Hát. Én mikor utoljára implementáltam valami hasonlót akkor nagyon is érdekelt. Más tészta, hogy általában a konvenciónak is próbálok 100%-ban eleget tenni. Ki-hogy.

"Ott szimatol a sarkadban vasfogait csattogtatva, minden egyes hétköznapod: kirúzsozott medvecsapda."

(#9205) Lortech válasza floatr (#9201) üzenetére


Lortech
addikt

Kő! ;]
Akkor kvázi json-rpc-szerűséget csinálsz?
Azért pl. cache-elhetőség és az api-d könnyű megismerhetősége, akár dokumentáció nélkül fontos szempont lehet. Főleg, ha nem nálad van a frontend, hanem másik csapatnak, beszállítónak kell kommunikálni resource-onként (vagy nálad inkább végpontonként), hogy mi hogy működik. A HTTP metódusok szemantikája lehet közös pont.

[ Szerkesztve ]

Thank you to god for making me an atheist

(#9206) floatr válasza Lortech (#9205) üzenetére


floatr
veterán

Nézd, amikor én ezt web service-nek hívtam, mindenki lehurrogott, hogy REST. Én nem akadok fenn az elnevezéseken.

Ami a strukturálását illeti, az eddigi felhasználási területeken a legkevésbé sem volt szükség CRUD-szerű mechanizmusra. Specifikáció van, ha nem lenne, akkor egy ráerőltetett REST felépítés sem segítene nekik, mert nem pet store példaalkalmazásokról van szó :P

(#9207) Chesterfield válasza Lortech (#9199) üzenetére


Chesterfield
senior tag

Köszönöm szépen a hozzászólást, jöhet még másoktól is :)

Ez a rengeteg matek tárgy, ami a Bsc-n van, elég ijesztő:
Diszkrét matematika, Matematikai logika, Kombinatorika és gráfelmélet, Lineáris algebra, Analízis, Numerikus analízis, Valószínűségszámítás és statisztika

Míg a FOKSZ-nál csak Diszkrét matematika van.

(#9209) Arver


Arver
csendes tag

Sziasztok!

Tudnátok nekem segíteni ebben ? Mi nem tetszik itt neki benne miért nem találja azt a ". "symbolt ? :W

Köszi előre is.

(#9210) emvy válasza Arver (#9209) üzenetére


emvy
nagyúr

a printIn-t nem talalja.. probalkozz inkabb println-nel.

while (!sleep) sheep++;

(#9211) motoflug


motoflug
őstag

Sziasztok!
Ahogy néztem ez a topik jobban pörög, így itt is felteszem újragondolt kérdésem:

Programozási tanfolyamot/kurzust keresnék a kövektkező ismeretekkel: alapszintű programozási tudásom van de mivel a programozás alapjai, alapelvek hiányoznak nem nagyon tudunk fejlődni és azt szeretném ha egy tanfolyam keretében ezeket az alapokat megkapnám és utána gyorsabban tudnék az önképzéssel haladni, programnyelvtől függetlenül a programozói gondolkodást magamévá tenni s alkalmazni. Mivel a legszimpatikusabb számomra a Java nyelv, ezért első körben ilyen tanfolyamot kezdenék el, de nem zárkózom el semmitől.
Ez az oldal (kép alul) tök jól összefoglalja az általam felszedni kívánt tudás vázát, de az állandó munka miatt leginkább esti, esetleg hétvégi képzés jönne szóba.
Mit tudnátok ajánlani ezek ismeretében?
Köszönöm előre is!

(#9212) IvoryBrown


IvoryBrown
csendes tag

Sziasztok

Parancssoros fájlkezelőt szeretnék írni!
konzolos megoldással.
Jó öreg linuxos parancsokkal.
pl:
cd.., cd név, ls, ls-s, mkdir, df, cp honnan hova, cat
Fő vonalakba ez lenne
Thx

(#9213) emvy válasza IvoryBrown (#9212) üzenetére


emvy
nagyúr

Szia

Sok sikert

Thx

while (!sleep) sheep++;

(#9214) Aethelstone válasza IvoryBrown (#9212) üzenetére


Aethelstone
addikt

Csatlakozom. Good luck :) (szarnak pofon)

MI 10T Pro 8/256 , Arsenal FC - Go Gunnarz...

(#9215) Neil Watts


Neil Watts
veterán

Sziasztok!

Lehet altalanosabb topikban kellene feltennem a kerdesem, passz. Projekt otletre varnek javaslatokat csupan, hogy mit keszitenetek abban az esetben, ha a munek tartalmaznia kell

- oroklodest
- stat es peldanytagokat
- private, protected, public lathatosagot
- alapertelmezett konstruktort, super(), this()
- tombot
- Kollekciot (List, Set) es Map-et
- Kivetelkezelest
- Pufferen keresztuli irast vagy olvasast
- Billlentyuzetrol valo olvasast / kepernyore irast
- fajlbol olvasast/fajlba irast

Kulon-kulon mindre tudok peldat hozni, illetve ertem a mukodesuket, am most egy egyseges feladat nem igazan jut eszembe. :(

Illetve ha grafikusan szeretnem megvalositani a programom, akkor milyen egyszeruen es gyorsan tanulhato frameworkot ajanlanatok?

Koszi!

Udv. core2

(#9216) sztanozs válasza Neil Watts (#9215) üzenetére


sztanozs
veterán

Legyegyszerűbb szerintem egy Game of life, amiben van kézi bevitel (billentyűzet) és load/save (IO) is.
A szimuláció futtatást meg másik szálon, hogy legyen benne pufferbe írás/olvasást.

JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...

(#9217) bucsupeti


bucsupeti
senior tag

Tudja valaki hogy mi lehet az oka hogy Netbeans 8.1-ben a következő jelenségnek?

Egy webalkalmazást készítek, hibernate-el. Van benne model package amiben vannak a hibernathez szükséges pojo-k annotációval .

a hibernate.cfg-re ha futtatok egy HQL queryt (from User) akkor rendben lefut minden, eredményben ott az oszlopok.

Ezután módosítottam az adatbázison, majd a pojo-ban is felvettem az új mezőt, annotálva.

Ezután ismét HQL query-t futtatok (from User) és nem látom az új mezőt.

Hiába clean-elem a projektet, no effect....

Bezárom a projektet, újranyitom... semmi.

Bezárom, kilépek a netbenasből, majd újraindítom és akkor látom a változást.

Ezt a jelenséget akár mikor reprodukálom.

Ubuntu 16.04 és Netbeans 8.1 Java 8-al és Tomcat-el (bár a tomcatnek itt még nincs túl sok szerepe)

Köszi a segítséget!

"Nem gond ha nem vágod a párologtatók bináris nyelvét..."

(#9218) Taoharcos


Taoharcos
aktív tag

Valaki el tudná magyarázni mi a side effect? Nem pontosan értem.

(#9219) emvy válasza Taoharcos (#9218) üzenetére


emvy
nagyúr

Van egy fuggvenyed,

R fuggveny(P1,P2,P3).

A fuggveny parameterei P1,P2,P3, visszateresi erteke R. Ha a fuggvenyt meghivod, es ennek eredmenyekepp a rendszerben _barmi_ mas megvaltozik, akkor van side effect. Peldaul ha kiir valamit a kepernyore, akkor az mar side effect.

[ Szerkesztve ]

while (!sleep) sheep++;

(#9220) mobal válasza emvy (#9219) üzenetére


mobal
MODERÁTOR

"eredmenyekebb". wut? :D

"Ott szimatol a sarkadban vasfogait csattogtatva, minden egyes hétköznapod: kirúzsozott medvecsapda."

(#9221) emvy válasza mobal (#9220) üzenetére


emvy
nagyúr

Bocs.

while (!sleep) sheep++;

(#9222) Taoharcos válasza emvy (#9219) üzenetére


Taoharcos
aktív tag

Köszönöm. :R

(#9223) sutszi


sutszi
veterán

Ha manapság xlsx és docx generálás a szándék, akkor milyen lehetőségek vannak az Apache POI-t leszámítva? Lehet ingyenes és fizetős is.

Ehhez még hozzá tenném a másik irányt, az ilyen fájlok feldolgozását akkor mi az ami jól használható?

[ Szerkesztve ]

Mondja, Mr. Babbage, ha rossz adatokat ad meg a gépnek, akkor is jó válasz fog kijönni belőle?" Képtelen vagyok felfogni azt az értelmi zavart, ami valakit egy ilyen kérdés feltevésére késztethet. - by Charles Babbage

(#9224) Aethelstone válasza sutszi (#9223) üzenetére


Aethelstone
addikt

Jasperreports.

MI 10T Pro 8/256 , Arsenal FC - Go Gunnarz...

(#9225) M_AND_Ms válasza sutszi (#9223) üzenetére


M_AND_Ms
addikt

Eddig én mindig a POI-nál kötöttem ki. Többek között azért, mert nálunk a riportok is összetettek, tele saját okossággal, programozottan állnak össze, és bejövő fáljok feldolgozása is a feladat.
Ott tartunk, hogy a kollégáiamnak már mondom, nem fogom az üzleti igények miatt az egész Officet leprogramozni és megvalósítani.

Aki tejszínhabot szeretne, az inkább verje ki a fejéből!

(#9226) Lortech válasza Aethelstone (#9224) üzenetére


Lortech
addikt

Jasperreports is Apache POI-t használ xlsx generálásra (JRXlsxExporter).
Ill. használhat még jexcelt, de az csak xls-re jó (JExcelApiExporter).
Szerintem Apache POI-nál jobb ingyenes alternatíva nincs jelenleg.

Thank you to god for making me an atheist

(#9227) sutszi


sutszi
veterán

Köszi a válaszokat. :R Az a helyzet, hogy én is kb erre jutottam, csak valahogy nem hittem el, hogy ennyire nincs választék... :F Apache POI-val volt egy nagyon kis tapasztalat évekkel ezelőtt... Az nem volt túl jó, de azóta biztos változott egy-két dolog.

[ Szerkesztve ]

Mondja, Mr. Babbage, ha rossz adatokat ad meg a gépnek, akkor is jó válasz fog kijönni belőle?" Képtelen vagyok felfogni azt az értelmi zavart, ami valakit egy ilyen kérdés feltevésére késztethet. - by Charles Babbage

(#9228) Aethelstone válasza Lortech (#9226) üzenetére


Aethelstone
addikt

Igazad van.

MI 10T Pro 8/256 , Arsenal FC - Go Gunnarz...

(#9229) floatr válasza sutszi (#9227) üzenetére


floatr
veterán

JXSL, ha template alapon akarsz generálni doksikat.

(#9231) zalyy


zalyy
tag

Sziasztok!

Jáva programozót keresünk aki egy játék klienshez írna scripteket.

Követelmények:
-Haladó szintű nyelvismeret a Jávában
-Runescape középszintű ismerete (Ha hajlandó vagy megismerni a játékot akkor nem követelmény)
-Angol nyelvismeret

Fizetésről és egyéb infókért email-ben vagy privátban!

Email: xalgold@gmail.com

(#9232) tboy93 válasza zalyy (#9231) üzenetére


tboy93
nagyúr

Hehe, keszul a jo kis RS-hez az autominer? :D

(#9233) zalyy válasza tboy93 (#9232) üzenetére


zalyy
tag

Annál azért komolyabb :DDD :DDD

(#9234) sztanozs válasza zalyy (#9231) üzenetére


sztanozs
veterán

Állásajánlatot ide pls: [link]

JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...

(#9235) zalyy válasza sztanozs (#9234) üzenetére


zalyy
tag

Rendben, köszönöm.

(#9236) orc88


orc88
őstag

Üdv!

Javaban egy akasztófa játékot kell csinálnom.

A program nagy része kész, már csak a kép megjelenítése hiányzik, amit én előre elkészített .jpg képekkel oldanék meg, (6 db van) amit a hibázások száma alapján cserélgetek.
Csináltam egy metódust, ami minden karakter megnyomás után lefut, és beállítja a képet a hibák alapján, így néz ki:
public Icon faimg(int hiba) {
ImageIcon kep = new ImageIcon();
String elut = " ";
switch (hiba) {
case 0: kep = new ImageIcon("G:\\Netbeans\\Java\\akasztofa\\img\\af_0.jpg"); break;
case 1: kep = new ImageIcon("G:\\Netbeans\\Java\\akasztofa\\img\\af_1.jpg"); break;
case 2: kep = new ImageIcon("af_2.jpg"); break;
case 3: kep = new ImageIcon("af_3.jpg"); break;
case 4: kep = new ImageIcon("af_4.jpg"); break;
case 5: kep = new ImageIcon("af_5.jpg"); break;
case 6: kep = new ImageIcon("af_6.jpg"); break;
}

(Próbáltam direkt kétféleképpen is, de egyikkel se megy a dolog)

Ezt lefuttatom minden gombnyomás után:
kep = muvelet.faimg(hiba);
keplabel.setIcon(kep);

Nem akarja megjeleníteni a képet, nem tudom mit rontok el :F
System.out.println-el is megnéztem, a kep megkapja az értéket (elérési utat), de amint lefut, az eredeti fehér kép helyén a keplabel-en semmi nem lesz, a fehér kép is eltünik. :F

Ha szükséges a forráskódot is meg tudom mutatni.

[ Szerkesztve ]

"Life's simple: You make choices and you don't look back."

(#9237) disy68 válasza orc88 (#9236) üzenetére


disy68
aktív tag

Ennyiből ugyan nem látszik mi a hiba, de szerintem az elérési utakkal lehet gond.

Csináltam egy kis minta projectet (maven project), két "kép cserélővel", az egyik a resource mappából szedi a képeket, a másik pedig külső könyvtárból.

Ha nincs jól megadva az elérési út a jelenség az általad is leírttal egyezik. Annyit még változtattam, hogy egységesen kezeljem a két változatot, hogy az ImageIcon-t java.net.URL paraméterrel példányosítom.

“Yeah, well, you know, that’s just, like, your opinion, man.” — The Dude

(#9238) orc88 válasza disy68 (#9237) üzenetére


orc88
őstag

Nem tudom, hogy mit befolyásol mert csak 2-3 tanuljuk, de a layoutot null layout-ra állítottam, így rögtön működött. :F

"Life's simple: You make choices and you don't look back."

(#9239) Sirpi válasza orc88 (#9236) üzenetére


Sirpi
senior tag

Ha mág megoldódott, egy kis optimalizáció:
A switch helyett elég ennyi:

kep = new ImageIcon("af_" + hiba + ".jpg");

Hazudnék, ha cáfolnám annak tagadását, hogy ez az ital nem nélkülözi a koffeinmentesség megnemlétének hiányát. Na most akkor van benne koffein, vagy nincs?!

(#9240) orc88 válasza Sirpi (#9239) üzenetére


orc88
őstag

:DD Köszönöm a tippet! :R

"Life's simple: You make choices and you don't look back."

(#9241) Regirck


Regirck
senior tag

Sziasztok!

Kérnék szépen egy kis segítséget!

Egy olyan "programot" szeretnék írni ami egy egyenletett lefutatt majd az ott kapott eredményel lefutatná mégegyszer az egyenletett. Próbálkoztam for ciklussal, de sajnos nemjött össze.

Kezdő érték mondjuk 16(x) lenne és az egyenlet z=(x/2)+4
Ismétlésnek köszönhetően ezek az értékek jönnének ki:

16 (ez a kiindulási érték)
12
10
9
8,5
8,25

(Java programnyelvvel egyelőre csak ismerkedek...)

Programot úgy szeretném megírni, hogy elég legyen a kiindulási értéket átírni, esetleg az egyenletett, majd a ciklusnál az ismétlési számot és utána a program annyiszor futan le azzal az egyenlettel ahányszor szeretném, mindezt úgy, hogy az előzőből számolna tovább.

Például ha szeretném a W nagy-nagyon sok számadik értéket megkapni akkor ne így kelljen leírnom annyiszor. Persze akkor más szám, más egyenlettel aminek értelme is lenne.

Előre is köszönöm a segítségeteket!

public static void main(String[] args) {
double W0 = 16;
{
System.out.println(W0);
}
double W1 = (W0 / 2) + 4;
{
System.out.println(W1);
}
double W2 = (W1 / 2) + 4;
{
System.out.println(W2);
}
double W3 = (W2 / 2) + 4;
{
System.out.println(W3);
}
double W4 = (W3 / 2) + 4;
{
System.out.println(W4);
}
double W5 = (W4 / 2) + 4;
{
System.out.println(W5);
}
}
}

[ Szerkesztve ]

(#9242) #68216320 válasza Regirck (#9241) üzenetére


#68216320
törölt tag

Nem biztos, hogy jól értem, de esetleg valami ilyesmi?

private static double keplet(double num) {
return num/2+4;
}

public static void main(String[] args) {
double num = 16;
int count = 10;
for (int i = 0; i < count; i++) {
num = keplet(num);
}
System.out.println("Result: " + num);
}

Count értelemszerűen annyi, ahányszor számolni akarsz. Num a kezdeti érték.

[ Szerkesztve ]

(#9243) Regirck válasza #68216320 (#9242) üzenetére


Regirck
senior tag

Hálás köszönet! :R

(#9244) #74220800


#74220800
törölt tag

Sziasztok!

Segítségeteket kérném. Le kell adnom egy torpedó játékot, úgy érzem a koncepcióm jó, de valahol valami félrecsúszott a megvalósításban. Közeleg a határidő, és a sorok kezdenek összefolyni, A kódom szerintem jó strukturált, nem hosszú, és a téma is érdekes. Örülnek ha valaki bele tudna kukkantani.

Szóval egy 10*10 mezőre kéne feldobni véletlenszerűen 10 darab hajót (4db 2es méretűt, 3db 3as, 2 db 4es, 1db 5os) vízszintesen vagy függőlegesen, úgy hogy a hajók csak a sarkoknál érintkezhetnek, máshol egy szabad helyet kell hagyni közöttük.

Algoritmusom a következő:

-Generálok egy véletlen sorrendű mátrixot a hajók méreteivel, és eszerint próbálom őket felpakolni a fieldre.

-generálok egy véletlen számot, hogy a hajót először vízszintesen (addig megyek a sorokban amíg találok neki helyet) vagy függőlegesen( addig....az oszlopokban..) próbálja felrakni

-Generálok egy másik véletlen sorrendű mátrixot a field index számaival. Az index egyrészt a sorokra vagy oszlopokra tett próbálkozások, ill. az adott sorban vagy oszlopban a hajó kezdőpontjára tett kísérleteknek a sorrendjét is jelöli. Minden hajót eszerint próbálok feltenni.

-Ha egy hajót se egyik sorrba se egyik oszlopba nem lehet berakni, kezdődik a cirkusz előröl. (ide a loop meg hianyzik)

-Biztos van sokkal jobba algoritmus az enyémnél, hatékonysága kérdéses, de ha nem elvetemült az ötletem, ragaszkodnék az enyémhez (idő hiánya miatt is), ezt kéne valahogy működésre bírni....

Néhány metódus magyarázat:

hajotSorra(int x, int[] arr, int size): a size méretű hajót próbálja berakni az x.dik sorba, az arr matrix szerinti kezdőpontsorrenddel balról jobbra.

hajotOszlopra(int y, int[] arr, int size): a size méretű hajót próbálja berakni az y.dik oszlopba, az arr matrix szerinti kezdőpontsorrenddel fentről lefele.

hajotVizszintesre(int[] arr, int size): a hajot az arr szerinti sorsorrendbe próbálja berakni valamelyik sorba.

public boolean hajotFuggolegesre: a hajot az arr szerinti oszlopsorrendbe próbálja berakni valamelyik oszlopba.

Es a kicsike:

public class torpedo {

private final int rows;
private final int cols;

private final boolean[][] hits;
private final boolean[][] ships;

public torpedo (int numRows, int numCols) {
this.rows = numRows;
this.cols = numCols;

this.hits = new boolean[rows][cols];
this.ships = new boolean[rows][cols];
}

public void startGame() {

placeShips();


printfield();

}

private void placeShips() {

int [] shiporder ={2,2,2,2,3,3,3,4,4,5};

for(int j = 0; j < shiporder.length; j++){

int n = (int)(Math.random()*10);
int b = shiporder[n];
shiporder[n] = shiporder[j];
shiporder[j] = b;
}


int [] randomarray ={0,1,2,3,4,5,6,7,8,9};

for(int j = 0; j < randomarray.length; j++){

int w = (int)(Math.random()*10);
int g = randomarray[w];
randomarray[w] = randomarray[j];
randomarray[j] = g;
}

for(int j = 0; j < shiporder.length; j++){

int ship = shiporder[j];

int e = (int)(Math.random()*2);

if ( e == 0 && (hajotVizszintesre( randomarray, ship) ||hajotFuggolegesre( randomarray, ship ) ));
if ( e == 1 && ( hajotFuggolegesre( randomarray, ship) || hajotVizszintesre( randomarray, ship ) ));

}



}


public boolean hajotSorra(int x, int[] arr, int size){

boolean shipreadyleft = false;

boolean shipreadyright = false;

for( int k = 0; k < arr.length; k++){

int point = arr[k];

for( int j = point; j >= 0; j--){

if( ships[x][j] || ships[ Math.max(0,x-1)][j] || ships[ Math.min(9,x+1)][j] ){

if (point - j >= 2) shipreadyleft =true;

break;
}

if( !ships[x][0] && !ships[ Math.max(0,x-1)][0] && !ships[ Math.min(9,x+1)][0] ) shipreadyleft =true;

}

if (shipreadyleft){

for( int j = point; j < ships.length; j++){

if( ships[x][j] || ships[ Math.max(0,x-1)][j] || ships[ Math.min(9,x+1)][j]){

if (j - point >= size + 1 ) shipreadyright =true;

break;
}

if( !ships[x][ships.length-1] && !ships[ Math.max(0,x-1)][ships.length-1] && !ships[ Math.min(9,x+1)][ships.length-1] && ships.length - 1 - point >= size + 1 ) shipreadyright =true;

}
}


if ( shipreadyright ){

for( int j = point; j - point + 1 <= size; j++){
ships[x][j] = true;
}
}

if ( shipreadyright && shipreadyleft) break;

}

return shipreadyright && shipreadyleft;


}


public boolean hajotOszlopra(int y, int[] arr, int size){

boolean shipreadyup = false;

boolean shipreadydown = false;

for( int k = 0; k < arr.length; k++){

int point = arr[k];

for( int j = point; j >= 0; j--){

if( ships[j][y] || ships[j][ Math.max(0,y-1)] || ships[j][Math.min(9,y+1)] ){

if (point - j >= 2) shipreadyup =true;

break;
}

if( !ships[0][y] && !ships[0][ Math.max(0,y-1)] && !ships[0][Math.min(9,y+1)] ) shipreadyup =true;

}

if (shipreadyup){

for( int j = point; j < ships.length; j++){

if( ships[j][y] || ships[j][ Math.max(0,y-1)] || ships[j][Math.min(9,y+1)]){

if (j - point >= size + 1 ) shipreadydown =true;

break;
}

if( !ships[ships.length-1][y] && !ships[ships.length-1][ Math.max(0,y-1)] && !ships[ships.length-1][Math.min(9,y+1)] && ships.length - 1 - point >= size + 1 ) shipreadydown =true;

}
}


if ( shipreadydown ){

for( int j = point; j - point + 1 <= size; j++){
ships[j][y] = true;
}
}

if ( shipreadydown && shipreadyup ) break;

}

return shipreadydown && shipreadyup;


}

public boolean hajotVizszintesre(int[] arr, int size){


for( int k = 0; k < arr.length; k++){

int p1 = arr[k];

if ( hajotSorra(p1, arr, size)) return true;
}

return false;

}

public boolean hajotFuggolegesre(int[] arr, int size){

for( int k = 0; k < arr.length; k++){

int p2 = arr[k];

if ( hajotOszlopra(p2, arr, size )) return true;
}

return false;

}

public void printfield(){
for(int i = 0; i < ships.length; i++){
for(int j = 0; j < ships[i].length; j++){
if (ships[i][j])
System.out.print("H");
else
System.out.print("-");
}
System.out.println();
}
}


}

(#9245) #74220800 válasza #74220800 (#9244) üzenetére


#74220800
törölt tag

itt a teszt hozza:

public class Jatek {


public static void main(String[] args){
int numRows = 10;
int numCols = 10;

torpedo bl = new torpedo (numRows, numCols);
bl.startGame();

}

}

[ Szerkesztve ]

(#9246) xTc válasza #74220800 (#9244) üzenetére


xTc
aktív tag

Szia,

nem kötekedésképpen, de osztálynevet nagykezdőbetűvel írunk. Egy pár unit teszt sokat segíthetne azon, hogy lásd melyik része nem úgy működik, ahogy szeretnéd.

(#9247) #74220800


#74220800
törölt tag

Najo hajotSorra() es a hajotOszlopra() metódusoknál elszámoltam magam.De meg mindig nem jő. Ha van aki velem számol (9244,9245 hozz), itt a frissitett verzio:

public class torpedo {

private final int rows;
private final int cols;

private final boolean[][] hits;
private final boolean[][] ships;

public torpedo (int numRows, int numCols) {
this.rows = numRows;
this.cols = numCols;

this.hits = new boolean[rows][cols];
this.ships = new boolean[rows][cols];
}

public void startGame() {

placeShips();


printfield();

}

private void placeShips() {

int [] shiporder ={2,2,2,2,3,3,3,4,4,5};

for(int j = 0; j < shiporder.length; j++){

int n = (int)(Math.random()*10);
int b = shiporder[n];
shiporder[n] = shiporder[j];
shiporder[j] = b;
}


int [] randomarray ={0,1,2,3,4,5,6,7,8,9};

for(int j = 0; j < randomarray.length; j++){

int w = (int)(Math.random()*10);
int g = randomarray[w];
randomarray[w] = randomarray[j];
randomarray[j] = g;
}

for(int j = 0; j < shiporder.length; j++){

int ship = shiporder[j];

int e = (int)(Math.random()*2);

if ( e == 0 && (hajotVizszintesre( randomarray, ship) ||hajotFuggolegesre( randomarray, ship ) ));
if ( e == 1 && ( hajotFuggolegesre( randomarray, ship) || hajotVizszintesre( randomarray, ship ) ));

}



}

public boolean hajotSorra(int x, int[] arr, int size){

boolean shipreadyleft = false;

boolean shipreadyright = false;

for( int k = 0; k < arr.length; k++){

int point = arr[k];

for( int j = point; j >= 0; j--){
if( ships[x][j] ){

if ( point - j >= 2 ) shipreadyleft =true;

break;
}

if( ships[ Math.max(0,x-1)][j] || ships[ Math.min(9,x+1)][j] ){

if (point - j >= 1 ) shipreadyleft =true;

break;
}

if( j == 0 ) shipreadyleft =true;

}

if (shipreadyleft){

for( int j = point; j < ships.length; j++){

if( ships[x][j] ){

if( j - point >= size + 1 ) shipreadyright =true;

break;
}

if( ships[ Math.max(0,x-1)][j] || ships[ Math.min(9,x+1)][j] ){

if ( j - point >= size ) shipreadyright =true;

break;
}

if( j == ships.length - 1 && ships.length - 1 - point >= size - 1 ) shipreadyright =true;

}
}


if ( shipreadyright ){

for( int j = point; j - point + 1 <= size; j++){
ships[x][j] = true;
}
}

if ( shipreadyright && shipreadyleft) break;

}

return shipreadyright && shipreadyleft;


}


public boolean hajotOszlopra (int y, int[] arr, int size){

boolean shipreadyup = false;

boolean shipreadydown = false;

for( int k = 0; k < arr.length; k++){

int point = arr[k];

for( int j = point; j >= 0; j--){

if( ships[j][y] ){

if (point - j >= 2) shipreadyup =true;

break;
}

if( ships[j][ Math.max(0,y-1)] || ships[j][Math.min(9,y+1)]){

if (point - j >= 1) shipreadyup =true;

break;

}


if( j == 0 ) shipreadyup =true;

}

if (shipreadyup){

for( int j = point; j < ships.length; j++){

if( ships[j][y]){

if (j - point >= size + 1 ) shipreadydown =true;

break;
}

if(ships[j][ Math.max(0,y-1)] || ships[j][Math.min(9,y+1)]){

if (j - point >= size ) shipreadydown =true;

break;

}

if( j == ships.length - 1 && ships.length - 1 - point >= size - 1 ) shipreadydown =true;

}
}


if ( shipreadydown ){

for( int j = point; j - point + 1 <= size; j++){
ships[j][y] = true;
}
}

if ( shipreadydown && shipreadyup ) break;

}

return shipreadydown && shipreadyup;


}


public boolean hajotVizszintesre(int[] arr, int size){


for( int k = 0; k < arr.length; k++){

int p1 = arr[k];

if ( hajotSorra(p1, arr, size)) return true;
}

return false;

}

public boolean hajotFuggolegesre(int[] arr, int size){

for( int k = 0; k < arr.length; k++){

int p2 = arr[k];

if ( hajotOszlopra(p2, arr, size )) return true;
}

return false;

}

public void printfield(){
for(int i = 0; i < ships.length; i++){
for(int j = 0; j < ships[i].length; j++){
if (ships[i][j])
System.out.print("H");
else
System.out.print("-");
}
System.out.println();
}
}


}

[ Szerkesztve ]

(#9248) #74220800 válasza #74220800 (#9247) üzenetére


#74220800
törölt tag

Na az előző verzió majdnem jó. Valamiért néha sorokon vagy oszlopokon belül berakja egymás mellé a hajókat. Kiszedtem belőle egy kisebb reszt. Ez a hatodik sorba próbál berakni két darab 4es hajót véletlenül.
Sajnos néha egymás mellé.. Valaki jöjjön plsssssssssss.

public class Tesztsor{ //java Tesztsor

public static void main(String[] args){

int [] randomatrix ={0,1,2,3,4,5,6,7,8,9};

boolean[][] hajok = new boolean [10][10];

for(int j = 0; j < randomatrix.length; j++){

int w = (int)(Math.random()*10);
int g = randomatrix[w];
randomatrix[w] = randomatrix[j];
randomatrix[j] = g;
}

hajokatSorra(5, randomatrix, 4, hajok);
hajokatSorra(5, randomatrix, 4, hajok);

for(int i = 0; i < hajok.length; i++){
for(int j = 0; j < hajok[i].length; j++){
if (hajok[i][j])
System.out.print("H");
else
System.out.print("-");
}
System.out.println();
}


}


public static boolean hajokatSorra(int x, int[] arr, int size, boolean[][] hajok ){

boolean shipreadyleft = false;

boolean shipreadyright = false;

for( int k = 0; k < arr.length; k++){

int point = arr[k];

for( int j = point; j >= 0; j--){

if( hajok[x][j] ){

if ( point - j >= 2 ) shipreadyleft =true;

break;
}

if( hajok[ Math.max(0,x-1)][j] || hajok[ Math.min(9,x+1)][j] ){

if (point - j >= 1 ) shipreadyleft =true;

break;
}

if( j == 0 ) shipreadyleft =true;

}

if (shipreadyleft){

for( int j = point; j < hajok.length; j++){

if( hajok[x][j] ){

if( j - point >= size + 1 ) shipreadyright =true;

break;
}

if( hajok[ Math.max(0,x-1)][j] || hajok[ Math.min(9,x+1)][j] ){

if ( j - point >= size ) shipreadyright =true;

break;
}

if( j == hajok.length - 1 && hajok.length - 1 - point >= size - 1 ) shipreadyright =true;

}
}


if ( shipreadyright ){

for( int j = point; j - point + 1 <= size; j++){
hajok[x][j] = true;
}
}

if ( shipreadyright && shipreadyleft) break;

}

return shipreadyright && shipreadyleft;


}

}

(#9249) #74220800 válasza #74220800 (#9248) üzenetére


#74220800
törölt tag

Ez jó, nekem manuálisan nem engedi lerakni közvetlen egymás melle két hajót, szinte bárhogy próbáltam. A véletlen mátrix sorrendjével valamikor pedig összejön, ezt nem értem...

(#9250) #74220800 válasza #74220800 (#9249) üzenetére


#74220800
törölt tag

megvan b@szodjon meg. Random táblával megvagyok szerintem.

Útvonal

Fórumok  »  Szoftverfejlesztés  »  Java programozás (kiemelt téma)
Copyright © 2000-2024 PROHARDVER Informatikai Kft.