Új hozzászólás Aktív témák
-
smallmer
őstag
Na srácok újabb hiba:
van egy kliensek nevű Listám ami socketeket tartalmat és ezeket akarom accept-elni.
get-el lekérek a socketet a listából,for(int i=0;i<n;++i) {
kliensek.get(i) = server.accept();
}és sajna ezt a hibaüzenetet kapom:
\DominoServer.java:61: error: unexpected type
kliensek.get(i) = server.accept();
^
required: variable
found: value
1 error
1 warningmi lehet a baj?
köszi -
smallmer
őstag
válasz
Aethelstone #9295 üzenetére
aha
ELTE-s. Egy a baj, bazira kevés a leadott anyag és ahhoz képest szerintem nagyon sok amit kérnek.
Sirpi csak 7 db dominot akarok küldeni, és több van a listában ezért meg 7-ig a for ciklus.
-
Sirpi
senior tag
válasz
smallmer #9294 üzenetére
A kiíró for ciklust is lehetne szebben írni, pl. nézhetne ki így az inicializálás utáni rész:
for (Domino domino : myList) {
pw.println(domino.getX());
pw.println(domino.getY());
System.out.println("elküldve");
}
Iterator<Domino> it = myList.iterator();
while (it.hasNext()) {
it.remove();
}Vagy az iterátoros rész helyett ennyi is elég lenne, ha csak a funkcionalitásra megyünk:
myList.clear();
-
Lortech
addikt
válasz
smallmer #9292 üzenetére
A lista nem tömb, ha a listából törölsz egy elemet, akkor csökken a lista hossza.
Tehát az utolsó for ciklusodban, ha jól látom i=4-nél már csak 3 elemed lesz a listában, és nem tudsz megcímezni a get(4) hívással 4-es indexű elemet. Ha minden elemet törölni akarsz, akkor MyList.clear(); Ha egyesével akarod, akkor mindig az elsőt a MyList.remove(0) hívással, vagy inkább iterator.remove. -
smallmer
őstag
Sziasztok
van egy listám amiben vannak számpárok(dominók), miután elküldöm őket a kliensnek, azokat amiket elküldtem ki szeretném törölni, itt mindig hibát dob. valamit elcsesztem de nem látom. szerintetek mi a baj?
List<Domino> MyList = new ArrayList<Domino>();
MyList.add(new Domino(0,1));
MyList.add(new Domino(1,2));
MyList.add(new Domino(2,3));
MyList.add(new Domino(3,4));
MyList.add(new Domino(4,5));
MyList.add(new Domino(5,6));
MyList.add(new Domino(6,7));
for (int i = 0; i < 7; i++) {
pw.println(MyList.get(i).getX());
pw.println(MyList.get(i).getY());
System.out.println("elküldve");
}
for (int i = 0; i < 7; i++) {
MyList.remove( MyList.get(i) );
} -
#74220800
törölt tag
@emvy , @disy68, thx. Vegul sikerült egyszerűbben megoldanom, de újabb problémába akadtam..
Gyorsrendezést kellene kivitelezni javaban, úgy hogy pivotkent mindig a résztömb utolsó két elemének a lekerekített átlagát kell venni. A kódom működik, úgy ha a pivot mindig résztömb utolsó eleme. Az előző verzióval vmi félrecsúszik. Hálás lennek ha valaki bele tudna kukkantani.
Itt a teszt hozza:
class gyors {
public static void main(String[] args) {
Integer [] a = {-8, -2, -4, -3, -10, -4, -9, -2, -9, -11};
qyors(a,0,a.length-1);
for (int j = 0; j < a.length ; j++) {
System.out.print(a[j] + " ");
}
}
public static void qyors(Integer [] a, int p, int r){
if ( p < r){
int q = Partition(a,p,r);
qyors(a, p, q - 1);
qyors(a, q + 1 , r);
}
}
public static int Partition(Integer [] a, int p, int r){
Integer x = (a[r]+a[r-1])/2; //a resztomb utolso ket elemenek a lekerekitett atlaga kene pivotnak
//Integer x = a[r]; //ezzel mukodik
int i = p - 1;
Integer help;
for (int j = p; j < r ; j++) {
if( a[j] <= x ){
i++;
help = a[i];
a[i] = a[j];
a[j] = help;
}
}
help = a[i+1];
a[i+1] = a[r];
a[r] = help;
return i+1;
}
} -
disy68
aktív tag
válasz
#74220800 #9284 üzenetére
Java 8 alatt van lehetőség metódus referenciát átadni. Akár az alábbihoz hasonlóan is elindulhatsz:
public class MethodRuntimeChecker {
public static void main(String[] args) {
QuickSorter sorter = new QuickSorter();
int[] array = getNumbers(10_000);
System.out.println(mesureRunTimeNano(sorter::sort, array) + " ns");
System.out.println(mesureRunTimeMilli(sorter::sort, array) + " ms");
}
public static long mesureRunTimeNano(Function<int[], int[]> intSorter, int[] toBeSorted) {
long start = System.nanoTime();
intSorter.apply(toBeSorted);
return System.nanoTime() - start;
}
public static long mesureRunTimeMilli(Function<int[], int[]> intSorter, int[] toBeSorted) {
long start = System.currentTimeMillis();
intSorter.apply(toBeSorted);
return System.currentTimeMillis() - start;
}
private static int[] getNumbers(int count) {
int[] numbers = new int[count];
Random random = new Random();
for (int i = 0; i < count; i++) {
numbers[i] = random.nextInt(count);
}
return numbers;
}
} -
#74220800
törölt tag
Sziasztok!
Néhány algoritmusnak kéne lemernem a tényleges futási idejét. Ehhez szeretnek egy olyan metódust csinálni ami paraméterként elfogad egy másik metódust(az algoritmust) es annak visszaadja a runtimet.
Tudom több megoldas is van a neten rá, de nekem kicsit zavarosak.Legegyszerűbben hogyan tudnám kivitelezni hogy működjön a counter metódusom alább?class SorterTest {
public static void main(String[] args) {
long l = counter(Sorter.quicksort(a));
}
public static long counter(Method method){
long startTime = System.currentTimeMillis();
method();
long stopTime = System.currentTimeMillis();
return stopTime - startTime;
}
} -
válasz
Aethelstone #9279 üzenetére
A port az fix, azt tudom elore, megadom const-kent, az ip ami kerdeses.
Konkretan akkor brute force módszerrel scanneljem vegig a tartomanyt?
-
disy68
aktív tag
válasz
Patrick76496 #9275 üzenetére
Nullát adni egy számhoz fölösleges, szerintem erre célzott a kolléga
Ami viszont fontosabb, hogy a max érték exclusive, szóval a nextInt(50) 0 és 49 között ad neked egy random számot. Lásd: doksi -
Újabb kérdéssel fordulnék hozzátok. Adott egy Server és egy Kliens android app. TCP protokollal kommunikálnak. A servernek ugye van egy ip címe, amit ha manuálisan beállítok a kliensen akkor egymásra találnak és mehet az infó küldés. A kérdés az, hogy hogyan tudnám megoldani, hogy ne kelljen a kliensen manuálisan megadni az ip címet, szóval hogyan találja meg az azonos wifi hálózaton lévő servert magától? Mik erre a bevett megoldások?
-
Patrick76496
őstag
válasz
Aethelstone #9267 üzenetére
Heló!
Ezzel osztom el, hogy a pályán milyen valószínűséggel forduljanak elő az adott dolgok. Kicsit lehet hülyén van kivitelezve, de működik. Szakközép óta nem foglalkoztam javával, szóval 1-2 dolgot át kellett ismételnem a beadandóhoz.
Úgy tudom, hogy a zárójelben lévő szám a legnagyobb, amit randomizálhat, a +0 meg a legkisebb.
-
(#9269) zsambek & (#9270) Aethelstone & (#9271) mobal
Köszönöm mindenkinek a tippeket, tanácsokat,
BufferedReader
-rel tökéletesen működik. A Server oldalon már tegnap átírtamRunnable
-re, de módosítom a kliens oldalt is -
smallmer
őstag
Sziasztok,
szeretném kérni a segítségeteket.
Fájlból beolvasásra lenne szükségem. Egy txt-ben vannak számok úgy hogy space-val vannak elválasztva 2-esével a következő formában:2 2
3 4
3 2
4 5és így tovább
ezeket a számokat szeretném beolvasni, csak nem tudom hogy mibe kellene. Két dimenziós tömb az nem jó mert nem tudom hogy hány számpár van.tudnátok adni valami irányt? köszönöm
-
válasz
Aethelstone #9270 üzenetére
+1 gyorstalpaló.
-
Sziasztok! Szerintetek ez miért száll el az if(sc.hasNext()) sorában az alábbi errorral? Mármint azt értem, hogy elfogy a memória, de miért?
public class NetworkThread extends Thread{
private boolean flag = true;
public void run(){
try{
Socket s = new Socket(getIpAddress(),8080);
final Scanner sc = new Scanner(s.getInputStream());
while(flag){
try{
if(sc.hasNext()){
msg = sc.nextLine();
}
} catch (Exception ex){
ex.printStackTrace();
}
}
} catch (Exception e){
e.printStackTrace();
}
}
public void stopThread(){
flag = false;
}
}Error:
FATAL EXCEPTION: Thread-81
Process: client.guidative, PID: 1122
java.lang.OutOfMemoryError
at java.util.Scanner.expandBuffer(Scanner.java:2067)
at java.util.Scanner.readMore(Scanner.java:2031)
at java.util.Scanner.findPreDelimiter(Scanner.java:1959)
at java.util.Scanner.setTokenRegion(Scanner.java:1919)
at java.util.Scanner.hasNext(Scanner.java:541)
at java.util.Scanner.hasNext(Scanner.java:519)
at client.guidative.MainActivity$NetworkThread.run(MainActivity.java:55)Már minden szart próbálgattam, hogy jó legyen
-
Aethelstone
addikt
válasz
Patrick76496 #9264 üzenetére
Hali.
A randm.nextInt(256)+0; mire való? Csak kíváncsiságból. Nem +1 akart lenni?
-
skoda12
aktív tag
válasz
Patrick76496 #9264 üzenetére
Rosszak a feltételeid. Pl első if-ben 164<=randmap és másodikban randmap>=165 átfedik egymást. Érdemes úgy szervezni a kódod, hogy a kisebb érték legyen mindig az operátor bal oldalán és nyílván csak a <= operátort használva, így elkerülhető az ilyen nehezen kiszúrható hiba. Vagy fordítva a másik operátorral, de mixelni nem szerencsés őket.
-
Patrick76496
őstag
Üdv!
Egy kis segítséget szeretnék kérni. Egy játékot szeretnék írni java nyelven, viszont a pálya legenerálásával gondjaim akadtak. Azt szeretném, hogy a pálya legalább fele üres terület legyen, a többi részén pedig 5 különböző dolog megfelelő előfordulási valószínűséggel.
A pálya egy 100x100-as 2D-s tömb lenne. A gond az, hogy mindenhova csak üres területet ('_' karakter) és fákat ('T' betű) generál, és utóbbiból is úgy néz ki, hogy túl sok van.Így néz ki a kódrészlet, ami a pálya generálását csinálja:
for(int i=0; i<100; i++){
for(int j=0; j<100; j++){
Random randm=new Random();
randmap=randm.nextInt(265)+0;
if(randmap>=133 && 164<=randmap){
map[j][i]='T';
}else if(randmap>=165 && 174<=randmap){
map[j][i]='Q';
}else if(randmap>=175 && 216<=randmap){
map[j][i]='w';
}else if(randmap>=217 && 258<=randmap){
map[j][i]='y';
}else if(randmap>=259 && 265<=randmap){
map[j][i]='*';
}else{
map[j][i]='_';
}
}
}Tudna valaki segíteni, hogy hogy lehetne ezt megoldani? Előre is köszönöm a segítséget!
-
orc88
őstag
Üdv!
Egy aprócska problémám akadt JFrame/JPanel-el kapcsolatban.
Adott egy JFrame, egy JPanellel. A program futása során ha szükséges hozzá ad képet tartalmazó JLabeleket a panelhez.
A probléma csak az, hogy ezek a labelek csak akkor jelennek meg ténylegesen, ha az ablakot akár egy pixellel is nagyítom vagy kicsinyítem.
Frame: Null layout
Panel: az összeset kipróbáltam, egyikkel se jó, de igazából csak a flow layout jo nekem, ami szépen egymás után pakolja a képeket (labeleket)Valami tipp?
-
bundli
tag
Tudtok ajánlani olyan oldalt ahol olyan gyakorló feladatok vannak amivel fel lehet eleveníti a tudásomat? Főleg a szintaktikát szeretném újra begyakorolni, mert most más nyelvben dolgoztam, de pár OOP-s feladat sem árt, amin gondolkozni is kell
-
válasz
Scroll Lock #9256 üzenetére
Miert Java-ban? Kb. a legkevesbe alkalmas platform a celra.
-
Scroll Lock
tag
Sziasztok!
Olyan java programot szeretnék készíteni, melyben egy blenderben készült modellt tudok tetszőleges irányban elforgatni. A programban meg lennének nyilak, amivel az elforgatást tudnám írányítani. Mit tudnátok ehhez ajánlani? Honnan érdemes elindulnom? -
#74220800
törölt tag
Hi!
gyors keresztkérdés:
Van egy while ciklusomban egy másik while ciklus. Ha a belső loopban breakelek, akkor ugye csak az fog megszakadni, és nem vele együtt a külső is?
-
Nojbee
tag
Sziasztok
Szeretném megoldani, hogy ha történik egy esemény (mentés), akkor egy másik felhasználónak generálódjon egy üzenet, hogy "valami elkészült, nézd meg". Ez úgy jelenne, hogy egy kis üzenet ikonnál frissül az üzenetek száma. Ha rákattint az ikonra, kinyílik egy panel, amiben ott az üzenet.
Java-t és Angular2-t használok, úgyhogy websocket-et néztem ki a megoldásra.
Egyelőre csak tesztelni szeretném a kapcsolatot, de a handshake sem jön össze.Példákat találtam megoldásra, a kliens oldal jónak is tűnik, mert a request elmegy
Viszont elszáll hibával:
09:59:13,527 ERROR [io.undertow.proxy] (default I/O-5) UT005028: Proxy request to /company-component-web/messageServer failed: java.io.IOException: UT001000: Connection closed
at io.undertow.client.http.HttpClientConnection$ClientReadListener.handleEvent(HttpClientConnection.java:529)
at io.undertow.client.http.HttpClientConnection$ClientReadListener.handleEvent(HttpClientConnection.java:472)
at org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:92)
at org.xnio.conduits.ReadReadyHandler$ChannelListenerHandler.readReady(ReadReadyHandler.java:66)
at org.xnio.nio.NioSocketConduit.handleReady(NioSocketConduit.java:88)
at org.xnio.nio.WorkerThread.run(WorkerThread.java:559)A java oldali kód:
@ServerEndpoint("/messageServer")
public class MessageServerEndpoint {
@OnOpen
public void onOpen(Session session) throws IOException {
session.getBasicRemote().sendText("onOpen");
}
@OnMessage
public String onMessage(String message) {
return message + " (from your server)";
}
@OnError
public void onError(Throwable t) {
t.printStackTrace();
}
@OnClose
public void onClose(Session session) {
}
}pom.xml-ben felvettem a javax.websocket
jboss-web.xml-ben pedig <enable-websockets>true</enable-websockets>Sajnos nem sok tapasztalatom van még ezen a téren, úgyhogy elakadtam. Esetleg tudna valaki segíteni továbblépni a problémán?
Köszönöm
Kliens oldalt is bemáoslom azért:
Service:import {Injectable} from "@angular/core";
import { Subject } from 'rxjs/Subject';
@Injectable()
export class WebSocketService {
private subject: Subject<any> = new Subject();
private ws : WebSocket;
connect(_url: string): void {
let self = this;
this.ws = new WebSocket(_url);
this.ws.onopen = function(evt) {
self.ws.send("Pinging from angular2!");
};
this.ws.onclose = function(evt) {};
this.ws.onmessage = function(evt) {
console.log(evt.data);
self.subject.next(evt.data);
};
this.ws.onerror = function(evt) {};
}
onMessageSubject(): Subject<any> {
return this.subject;
}
}amit innen hívok:
constructor(private httpService: CommonHttpService<MessageBoardVM>, public webSocketService: WebSocketService) {
this.webSocketService.connect("ws://" + document.location.host + document.location.pathname + "messageServer");
this.webSocketService.onMessageSubject().subscribe(
value => {this._serverInfo = value;}
);
} -
#74220800
törölt tag
válasz
#74220800 #9247 üzenetére
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;
}
} -
#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();
}
}
} -
#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();
}
}
} -
#68216320
törölt tag
válasz
Regirck #9241 üzenetére
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.
-
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);
}
}
} -
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.
-
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
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.Ha szükséges a forráskódot is meg tudom mutatni.
-
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 nyelvismeretFizetésről és egyéb infókért email-ben vagy privátban!
Email: xalgold@gmail.com
-
MrSealRD
veterán
Köszi a válaszokat.
Az a helyzet, hogy én is kb erre jutottam, csak valahogy nem hittem el, hogy ennyire nincs választék...
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.
-
Lortech
addikt
válasz
Aethelstone #9224 üzenetére
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. -
M_AND_Ms
veterán
válasz
MrSealRD #9223 üzenetére
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. -
MrSealRD
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ó?
-
válasz
Taoharcos #9218 üzenetére
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.
-
Taoharcos
aktív tag
Valaki el tudná magyarázni mi a side effect? Nem pontosan értem.
-
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!
-
sztanozs
veterán
válasz
Neil Watts #9215 üzenetére
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. -
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 irastKulon-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
-
Aethelstone
addikt
válasz
IvoryBrown #9212 üzenetére
Csatlakozom. Good luck
(szarnak pofon)
-
válasz
IvoryBrown #9212 üzenetére
Szia
Sok sikert
Thx
-
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 -
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! -
Chesterfield
őstag
válasz
Lortech #9199 üzenetére
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 statisztikaMíg a FOKSZ-nál csak Diszkrét matematika van.
-
floatr
veterán
válasz
Lortech #9205 üzenetére
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ó
-
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. -
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.
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
Új hozzászólás Aktív témák
Hirdetés
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- Új - Macbook Pro 13" M1 - 2020, 16GB RAM, 1 TERA, touchbar - Apple garancia (106)
- Macbook Pro 13" M1 - 2021 gyártás, 16/512GB, touchbar - garancia (56)
- Macbook Pro 13" M1 - 2021 gyártás, 512GB, touchbar - garancia (63)
- Apple iPhone 12 Pro 128GB, Kártyafüggetlen, 1 Év Garanciával
- Cooler Master CK550 RGB mechanikus (barna switch/magyar kiosztás)
- ÁRGARANCIA! Épített KomPhone Ryzen 5 4500 16/32/64GB RAM RTX 3060 12GB GAMER PC termékbeszámítással
- Telefon felvásárlás!! iPhone X/iPhone Xs/iPhone XR/iPhone Xs Max
- BESZÁMÍTÁS! Gigabyte B760M i5 14600KF 64GB DDR4 512GB SSD RTX 3080 10GB Corsair 4000D Airflow 1000W
- ÁRGARANCIA!Épített KomPhone i5 13400F 16/32/64GB RAM RTX 5070 12GB GAMER PC termékbeszámítással
- iKing.Hu - Apple iPhone 13 Pro Max - Graphite - Használt, újszerű
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest