Hirdetés

Ú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 warning

    mi lehet a baj?
    köszi

    közben megvan
    köszi

  • 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 warning

    mi lehet a baj?
    köszi

  • Aethelstone
    addikt

    aha :D 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.

    Nos, akkor egyrészt hibaüzenetet kérünk, másrészt meg iterátorral törölj..

  • smallmer
    őstag

    Bár nem írtad mi a hiba, de én is iterátoros törlést ajánlok. És változónév kisbetűvel kezdődik.

    Mi ez? Elte-s beadandó? :D

    aha :D 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

    köszönöm szépen, holnap reggel kipróbálom és jelentkezem amint megvagyok :)

    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();

  • Aethelstone
    addikt

    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) );
    }

    Bár nem írtad mi a hiba, de én is iterátoros törlést ajánlok. És változónév kisbetűvel kezdődik.

    Mi ez? Elte-s beadandó? :D

  • smallmer
    őstag

    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.

    köszönöm szépen, holnap reggel kipróbálom és jelentkezem amint megvagyok :)

  • Lortech
    addikt

    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) );
    }

    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.. :D

    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;

    }






    }

    Megvan. Hanyagoljuk az előzőt.

  • #74220800
    törölt tag

    @emvy , @disy68, thx. Vegul sikerült egyszerűbben megoldanom, de újabb problémába akadtam.. :D

    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;

    }






    }

  • Aethelstone
    addikt

    Ami mondjuk nem valodi methodus referencia, csak nemi syntactic sugar a Function konstruktorok korul, de jah.

    Az ördög találmánya :)

  • emvy
    félisten

    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;
    }
    }

    Ami mondjuk nem valodi methodus referencia, csak nemi syntactic sugar a Function konstruktorok korul, de jah.

  • disy68
    aktív 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;


    }



    }

    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;
    }
    }

  • emvy
    félisten

    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;


    }



    }

    Ne metodust fogadjon, hanem pl. egy Runnable-t. Viszont ovatosan ezzel, mert a Java performance benchmarking nagyon nem trivialis dolog (foleg a JIT miatt).

  • mobal
    nagyúr

    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;


    }



    }

    Én tesztet írnék erre. Előtte és utána time, majd különbség. Kb. 3 sor egy teszt.

  • #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;


    }



    }

  • disy68
    aktív tag

    párban kellene lenniük a számoknak :) ezt is meg lehet valósítani így?

    Csinálsz egy dto (data transfer object) osztályt, ami egy pojo (plain old java object), két adattaggal, ami a soronkénti két számod, ezeket tárolod pl. egy listában.

  • smallmer
    őstag

    Listába pakolsz objektumokat (POJO)?

    párban kellene lenniük a számoknak :) ezt is meg lehet valósítani így?

  • Lortech
    addikt

    Ú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? :R

  • tboy93
    nagyúr

    IP+port scan. Végül is végig lehet szkennelni az összes lehetséges ip+port párost, de nem gazdaságos....esetleg multicast...

    A port az fix, azt tudom elore, megadom const-kent, az ip ami kerdeses.

    Konkretan akkor brute force módszerrel scanneljem vegig a tartomanyt? :DDD

  • Aethelstone
    addikt

    Ú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? :R

    IP+port scan. Végül is végig lehet szkennelni az összes lehetséges ip+port párost, de nem gazdaságos....esetleg multicast...

  • Aethelstone
    addikt

    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

    Arra céloztam igen :) Meg hogy talán +1 akart lenni, hogy a 0-át, mint random számot kizárja.

  • disy68
    aktív tag

    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. :D Úgy tudom, hogy a zárójelben lévő szám a legnagyobb, amit randomizálhat, a +0 meg a legkisebb.

    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

  • tboy93
    nagyúr

    Ú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? :R

  • Hali.

    A randm.nextInt(256)+0; mire való? Csak kíváncsiságból. Nem +1 akart lenni?

    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. :D Úgy tudom, hogy a zárójelben lévő szám a legnagyobb, amit randomizálhat, a +0 meg a legkisebb.

  • tboy93
    nagyúr

    (#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írtam Runnable-re, de módosítom a kliens oldalt is :R

  • mobal
    nagyúr

    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

    Listába pakolsz objektumokat (POJO)?

  • 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

  • mobal
    nagyúr

    Tegyél az else ágba egy flag = false;-t Ha a nextLine elfogy, akkor sem áll le a szál.

    És ne Thread-et extendálj, hanem Runnable-t implementálj. Ez nem a feladathoz, hanem általában...

  • Aethelstone
    addikt

    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? :F

    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 :DDD

    Tegyél az else ágba egy flag = false;-t Ha a nextLine elfogy, akkor sem áll le a szál.

    És ne Thread-et extendálj, hanem Runnable-t implementálj. Ez nem a feladathoz, hanem általában...

  • zsambek
    aktív tag

    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? :F

    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 :DDD

    Szia!
    Scanner helyett nézd meg BufferedReader-rel.
    new BufferedReader(new InputStreamReader(s.getInputStream()));

    Erre mit dob?

  • tboy93
    nagyúr

    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? :F

    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 :DDD

  • Aethelstone
    addikt

    Ü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! :R

    Hali.

    A randm.nextInt(256)+0; mire való? Csak kíváncsiságból. Nem +1 akart lenni?

  • 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.

    Köszi szépen, igazad volt. Sosem belülre szoktam tenni a feltételnek megadott számot, most nem tudom miért így írtam. :B Lehet pont emiatt zavarodtam bele, elég figyelmetlen voltam. Most már mást is generál, köszönöm szépen a segítséget! :R

  • skoda12
    aktív tag

    Ü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! :R

    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.

  • Ü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! :R

  • Regirck
    senior 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 :) :R

    codingbat.com
    sololearn.com -> telefonos applikacioja is van

  • orc88
    őstag

    Swing UI anomáliák akkor fordulnak elő többnyire, ha nem a UI threaden piszkálod a komponenseket.

    setVisible(true) minden label módosítás után megoldotta :DD

  • skoda12
    aktív tag

    Ü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. :Y

    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? :F :R

    Swing UI anomáliák akkor fordulnak elő többnyire, ha nem a UI threaden piszkálod a komponenseket.

  • 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. :Y

    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? :F :R

  • 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 :) :R

  • floatr
    veterán

    Miert Java-ban? Kb. a legkevesbe alkalmas platform a celra.

    JOGL és tsai...? Nem értem hogy miért lenne kevésbé alkalmas, mint sok más platform.

  • emvy
    félisten

    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?

    Miert Java-ban? Kb. a legkevesbe alkalmas platform a celra.

  • 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?

  • 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 :R

    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;}
    );
    }

    ahhh, egyszerűen csak rosszul volt összerakva a path....

  • tboy93
    nagyúr

    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?

    Csak a belso ciklusbol fog kiugrani, ha mindkettőbol ki akarsz lepni akkor itt a megoldas: link

  • #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 :R

    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

    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...

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

  • #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;


    }

    }

    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...

  • #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();
    }
    }


    }

    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();
    }
    }


    }

  • xTc
    aktív 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();
    }
    }


    }

    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.

  • #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();
    }
    }


    }

    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();

    }

    }

  • #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();
    }
    }


    }

  • Regirck
    senior 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.

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

  • #68216320
    törölt 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);
    }
    }
    }

    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);
    }
    }
    }

  • orc88
    őstag

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

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

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

  • Sirpi
    senior tag

    Ü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.

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

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

  • orc88
    őstag

    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.

    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

  • disy68
    aktív tag

    Ü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.

    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 :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.

  • sztanozs
    veterán

    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

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

  • tboy93
    nagyúr

    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

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

  • 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

  • floatr
    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.

    JXSL, ha template alapon akarsz generálni doksikat.

  • Aethelstone
    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.

    Igazad van.

  • MrSealRD
    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.

  • 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.

  • M_AND_Ms
    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ó?

    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.

  • Aethelstone
    addikt

    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ó?

    Jasperreports.

  • 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ó?

  • Taoharcos
    aktív tag

    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.

    Köszönöm. :R

  • mobal
    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.

    "eredmenyekebb". wut? :D

  • emvy
    félisten

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

    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.

  • 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

    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

    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.

  • 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

  • Aethelstone
    addikt

    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

    Csatlakozom. Good luck :) (szarnak pofon)

  • emvy
    félisten

    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

    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!

  • emvy
    félisten

    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.

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

  • 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.

  • Ha már 4 félév, akkor már miért nem 6 és van egy szakirányú diplomád. Nagy az átfedés a két képzés között, sok esetben ugyanazok az oktatók tanítanak, de az elvárások alacsonyabbak lehetnek - amik amúgy sem túlságosan magasak a példaként felhozott helyen.
    Interjú másik oldaláról nézve én biztosan "nagyon megkérdezném" a jelöltet fejlesztői pozícióra, ha ilyen végzettséggel jelentkezik, de a végén úgyis a tudás döntene. Ha a képzés mellett egyénileg képzed magad és elhelyezkedsz gyakornokként közben, akkor van esély ledolgozni a kisebb értékű papírból eredő hátrányokat.

    Egyébként ha a tudás megvan, egy nem szakirányú műszaki diplomával is simán felvesznek. Pl. vannak/voltak villanyos, gépész, matematikus, fizikus, vegyész, közgazdász fejlesztő / tesztelő kollégáim. Az elején kompromisszumot kell kötni, és bárhogy bejutni valahova, ahol releváns tapasztalatot tudsz szerezni.

    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.

  • floatr
    veterán

    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.

    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

  • Lortech
    addikt

    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

    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.

  • mobal
    nagyúr

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

    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.

  • floatr
    veterán

    > GET/PUT/POST/DELETE

    Ooooo, akkor az nem REST :)

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

  • emvy
    félisten

    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

    > GET/PUT/POST/DELETE

    Ooooo, akkor az nem REST :)

  • floatr
    veterán

    REST is so last year :)

    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

Új hozzászólás Aktív témák

Hirdetés