Síða 2 af 5

Re: Java hjálp...

Sent: Mán 01. Mar 2010 14:47
af KermitTheFrog
Flott mál, en ef ég vil svara með já og nei? (orð, ekki bókstafir)

Hvað set ég í if setninguna? Ég get ekki gert if (svar == 'já') þá kemur "unclosed character literal"

Re: Java hjálp...

Sent: Mán 01. Mar 2010 15:13
af Phanto
Notar ' ' bara með char, " " er notað fyrir strengi.
Annars hef ég ekkert notað Java og veit ekki hvernig þú getur notað orð í staðinn fyrir bókstafi.

Re: Java hjálp...

Sent: Mán 01. Mar 2010 15:24
af SteiniP
prófaðu að búa til streng

Kóði: Velja allt

    String positive = "já";

og svo if setningin

Kóði: Velja allt

if (svar == positive)
          System.out.println("Flott mál");
        else
          System.out.println("Þá bendi ég þér á Melabúðina");

Re: Java hjálp...

Sent: Mán 01. Mar 2010 15:33
af KermitTheFrog
Ef ég geri:

Kóði: Velja allt

import java.util.Scanner;
public class melur2{
  public static void main(String[] args){
    Scanner lesa = new Scanner(System.in);
    String svar;
    String ja = "já";
    String nei = "nei";
    System.out.println("Ertu melur?");
    svar = lesa.next();
   
    if (svar == ja)
      System.out.println("Flott mál");
    else if (svar == nei)
      System.out.println("Þá bendi ég þér á Melabúðina");
    else
      System.out.println("Svaraðu með já eða nei");
  }
}


Þá fæ ég alltaf út "Svaraðu með já eða nei"

Re: Java hjálp...

Sent: Mán 01. Mar 2010 16:35
af Phanto
Náði í DrJava og þetta var ekki að virka hjá mér heldur, fann þetta: http://leepoint.net/notes-java/data/str ... rison.html

nota semsagt if (svar.equals(ja)) eða bara svar.equals("Já") og sleppa því að skilgreina ja og nei breyturnar

Re: Java hjálp...

Sent: Mán 01. Mar 2010 17:18
af KermitTheFrog
Nice, takk fyrir þetta :D

Re: Java hjálp...

Sent: Mán 12. Apr 2010 21:55
af KermitTheFrog
Enn og aftur þarf ég að leita hingað. Er að vinna eftirfarandi verkefni:

Búið til forrit sem les inn fimm heiltölur sem eru á bilinu frá 1 - 6. Við gerum ráð fyrir það þetta séu tölur sem hafa komið upp í spilinu Yatsy. Forritið á að segja til um hvort tölurnar mynda annað hvort litla röð, þ.e. 1 2 3 4 og 5 eða stóra röð, þ.e. tölurnar 2 3 4 5 og 6.

Ábending: Það getur auðveldað lausnaraðferðina að lesa tölur inn í fylki og raða síðan fylkinu.

Kóði: Velja allt

import java.util.Arrays;
import java.util.Scanner;
public class fylki1 {
  public static void main(String[] args) {
    Scanner lesa = new Scanner(System.in);
    int tala[] = new int[6];
     
      for (int i=0; i<6; i++) {
      System.out.println("Sláðu inn tölu "+(i+1));
       tala[i] = lesa.nextInt();
    }
   
    for (int i=0; i<6; i++) {
      System.out.println("Tala "+(i+1)+" - "+tala[i]);
    }
    Arrays.sort(tala);
    for (int i=0; i<6; i++) {
      System.out.print(tala[i]+"  ");
    }
  }
}


Mig vantar hjálp við að koma þessu inn í if setningu, s.s. if (fylki myndar röð) { Þetta er röð }

Re: Java hjálp...

Sent: Mán 12. Apr 2010 22:14
af Phanto

Kóði: Velja allt

bool rod = true;
if(tala[0] == 1 || tala[0] == 2)
{
   for(int i = 0; i<5; i++)
   {
      if(tala[i+1] != tala[i] + 1)
         rod = false;
   }
   if (rod)
   {
      if(tala[0] == 1)
         System.out.println("Litla röð");
      else
         System.out.println/"Stóra röð");
   }
}

Re: Java hjálp...

Sent: Mán 12. Apr 2010 22:33
af KermitTheFrog
Takk, skil lítið í þessu en ég náði að leysa þetta verkefni.

Þú gætir samt mögulega hjálpað mér með næsta verkefni sem hljóðar:
Búið til forrit sem les inn fimm heiltölur sem eru á bilinu frá 1 - 6. Við gerum ráð fyrir það þetta séu tölur sem hafa komið upp í spilinu Yatsy. Forritið á að segja til um hvort nota má tölurnar sem eitt par, tvö pör, þrír eins, fjórir eins, hús eða Yatsy.

Ábending: Það getur auðveldað lausnaraðferðina að búa til fylki af teljurum sem segja til um hversu oft ákveðin tala kom upp.





Dæmi um virkni forrits:

tala 1: 2
tala 2: 5
tala 3: 5
tala 4: 2
tala 5: 3

Það má nota þetta sem eitt par
Það má nota þetta sem tvö pör

Annað dæmi um virkni forrits:

tala 1: 6
tala 2: 6
tala 3: 2
tala 4: 2
tala 5: 6

Það má nota þetta sem eitt par
Það má nota þetta sem tvö pör
Það má nota þetta sem hús
Það má nota þetta sem þrír eins

[code]// Skilaverkefni 21
// Daníel Grétarsson
// 12. apríl 2010
import java.util.Arrays;
import java.util.Scanner;
public class fylki2 {
public static void main(String[] args) {
Scanner lesa = new Scanner(System.in);
int tala[] = new int[5];
int teljarar[] = new int[6];

for (int i=0; i<5; i++) {
System.out.println("Teningur "+(i+1));
tala[i] = lesa.nextInt();
if (tala[i] == 1) teljarar[0] += 1;
if (tala[i] == 2) teljarar[1] += 1;
if (tala[i] == 3) teljarar[2] += 1;
if (tala[i] == 4) teljarar[3] += 1;
if (tala[i] == 5) teljarar[4] += 1;
if (tala[i] == 6) teljarar[5] += 1;
}
}
}

Ég sé ekki, miðað við kunnáttu mína, hvernig ég get leyst þetta án þess að detta í if setningar sem ná langleiðina á Ísafjörð.

Re: Java hjálp...

Sent: Þri 13. Apr 2010 19:08
af KermitTheFrog
einkver?

Re: Java hjálp...

Sent: Mán 19. Apr 2010 17:01
af KermitTheFrog
Komið

Kóði: Velja allt

// Skilaverkefni 22
// Daníel Grétarsson
// 12. apríl 2010
import java.util.Arrays;
import java.util.Scanner;
public class fylki1 {
  public static void main(String[] args) {
    Scanner lesa = new Scanner(System.in);
    int tala[] = new int[5];
    int teljarar[] = new int[6];
   
    for (int i=0; i<5; i++) {
      System.out.println("Teningur "+(i+1));
      tala[i] = lesa.nextInt();
      if (tala[i] == 1) teljarar[0] += 1;
      if (tala[i] == 2) teljarar[1] += 1;
      if (tala[i] == 3) teljarar[2] += 1;
      if (tala[i] == 4) teljarar[3] += 1;
      if (tala[i] == 5) teljarar[4] += 1;
      if (tala[i] == 6) teljarar[5] += 1;
    }
    int par = 0;
    int þrir = 0;
    int tvopor = 0;
    for (int i=0; i<6; i++) {
      if (teljarar[i] == 2) par++;
      if (teljarar[i] == 3) þrir++;
    }
    if (par == 1 || par == 2)
      System.out.println("Þetta má nota sem par");
    if (par == 2 || (par == 1 && þrir ==1))
      System.out.println("Þetta má nota sem tvö pör");
    if (þrir == 1)
      System.out.println("Þetta má nota sem þrjá eins");
    if (par == 1 && þrir == 1)
      System.out.println("Þetta má nota sem hús");
  }
}

Re: Java hjálp...

Sent: Mið 22. Sep 2010 15:56
af KermitTheFrog
Mig langar að spyrja ykkur að einu varðandi fylki. Ég get reiknað með

Kóði: Velja allt

public static int dagar(int dag, int man, int a) {
    int[] manudir = new int[12];
    manudir[0] = 31;
    manudir[1] = 28;
    int fra = 0;
    man--;
   
    for (int i = 0; i <= man; i++) {
      fra = fra+(manudir[i]*man);
    }

    fra = fra+10;
    return fra;     
  }


en get ég ekki gert manudir[0,2,4,6,7,] = 31 osfrv? þarf ég að skrifa alltaf upp hvert fyrir sig?

Re: Java hjálp...

Sent: Mið 22. Sep 2010 16:18
af dori
Þú þarft að skrifa hvert upp fyrir sig. Eða nota eitthvað eins og:

Kóði: Velja allt

int[] manudir = {31, 28, 31, 30, 31, ...};


Svo geturðu auðvitað verið sniðugri en þetta og komið þessu í færri stafi en þá ertu væntanlega farinn að gera fáránleg trix. Það borgar sig mjög sjaldan.

Re: Java hjálp...

Sent: Mið 22. Sep 2010 17:12
af Daz
eða

Kóði: Velja allt

manudir[0] = manudir[2] = manudir[4] = manudir[6] = manudir[7] = 31;

Re: Java hjálp...

Sent: Mið 22. Sep 2010 18:24
af intenz
Sá hjá þér að þú notar breytu með séríslenskum staf (þ / þrir) ... það er mjög slæm forritunaraðferð.

Re: Java hjálp...

Sent: Mið 22. Sep 2010 19:04
af KermitTheFrog
intenz skrifaði:Sá hjá þér að þú notar breytu með séríslenskum staf (þ / þrir) ... það er mjög slæm forritunaraðferð.


Ok, ég reyni nú að forðast það þar sem mér datt í hug að það gæti verið bögg. Geri aldrei ð eða ö eða kommustafi. Þarna hef ég bara gleymt mér.

En takk annars fyrir ráðin.

EDIT: Kláraði þetta þökk sé ykkar snilligáfu

Kóði: Velja allt

// Skilaverkefni 12
// Daníel Grétarsson
// 22. sept 2010
import java.util.Scanner;
public class aramot {
  public static void main(String[] args){
    Scanner lesa = new Scanner(System.in);
    int dagur;
    int manudur;
    int ar;
   
    System.out.print("Sláðu inn dag: ");
    dagur = lesa.nextInt();
    System.out.print("Sláðu inn mánuð: ");
    manudur = lesa.nextInt();
    System.out.print("Sláðu inn ár: ");
    ar = lesa.nextInt();
   
    int nidurstada = dagar(dagur, manudur, ar);
    System.out.println("Það eru "+nidurstada+" dagar frá áramótum þann "+dagur+"/"+manudur+"/"+ar);
  }
 
  public static int dagar(int dag, int man, int a) {
    int hlaup = a % 4;
    int[] manudir = new int[13];
    manudir[1] = manudir[3] = manudir[5] = manudir[7] = manudir[8] = manudir[10] = manudir[12] = 31;
    manudir[4] = manudir[6] = manudir[9] = manudir[11] = 30;
    if (hlaup == 0) manudir[2] = 29;
    else manudir[2] = 28;
   
    int fra = 0;
    for (int i = 0; i < man; i++) {
      fra = fra+manudir[i];
    }   
    fra = fra+dag;
    return fra;
  }
}


Er þetta ekki annars alveg rétt? Ég er allvega búinn að prufa þetta og þetta virkar fínt.

Re: Java hjálp...

Sent: Fös 24. Sep 2010 11:29
af Daz
minni texti og jafnvel skiljanlegri að skrifa

Kóði: Velja allt

int[] manudir = {31,28,31,30,31,30,31,31,30,31,30,31};


Afhverju er þetta array með lengd 13? Afhverju er þetta ekki bara 12 og byrjar á 0? manudir[0] er null/ekki initialized hjá þér.

Svo er formúlan til að finna hvort það er hlaupár ekki 100% rétt hjá þér:

Kóði: Velja allt

if year modulo 400 is 0
       then is_leap_year
else if year modulo 100 is 0
       then not_leap_year
else if year modulo 4 is 0
       then is_leap_year
else
       not_leap_year

Sjá wikipediu

Re: Java hjálp...

Sent: Fös 24. Sep 2010 11:43
af dori
Daz skrifaði:minni texti og jafnvel skiljanlegri að skrifa

Kóði: Velja allt

int[] manudir = {31,28,31,30,31,30,31,31,30,31,30,31};


Afhverju er þetta array með lengd 13? Afhverju er þetta ekki bara 12 og byrjar á 0? manudir[0] er null/ekki initialized hjá þér.

Þetta virkar hjá honum af því að man er 1 index og java trítar tóma manudir[0] greinilega sem 0.

@OP: Ég myndi nota kóðann hans Daz sem ég vitna hérna í til að setja upp mánuði. Nota svo hlaupárs algrímið þar til að breyta manudir[1] í 29 ef það er hlaupár. Svo þarftu að aðlaga lykkjuna sem telur daga þannig að það sé farið uppí man - 1 en ekki bara man.

Eitthvað svona:

Kóði: Velja allt

 public static int dagar(int dag, int man, int a) {
    int[] manudir = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    if (a % 400 == 0 || (a % 4 == 0 && a % 100 != 0)) manudir[1] = 29;
   
    int fra = 0;
    for (int i = 0; i < man - 1; i++) {
      fra = fra+manudir[i];
    }   
    fra = fra+dag;
    return fra;
  }

Re: Java hjálp...

Sent: Mið 06. Okt 2010 13:43
af KermitTheFrog
Var að forrita 21 með föllum. Finnst þetta bara nokkuð vel gert.

Kóði: Velja allt

import java.util.Scanner;
public class spil21fall {
  public static void main(String[] args) {
    Scanner lesa = new Scanner(System.in);
    String svar = "";
    int teljari = 0;
    int leikmadurvann = 0;
    int tolvavann = 0;
    do {
      teljari++;
      String nleik = " leiki";
      String tleik = " leiki";
      int notandi = notandiSpilar();
      int tolva = 0;
      if (notandi < 21) tolva = tolvaSpilar();
     
      if ((notandi > tolva && notandi < 21) || (tolva > 21 && notandi <= 21) || notandi == 21) {
        System.out.println("\nÞú vannst");
        leikmadurvann++; }
      else if (tolva == notandi || tolva <= 21 || (tolva > notandi && tolva <= 21) || (notandi > 21 && tolva <= 21)) {
        System.out.println("\nTölvan vann");
        tolvavann++; }
     
      if (tolvavann == 1) tleik = " leik";
      if (leikmadurvann == 1) nleik = " leik";     
      System.out.println("\nFjöldi leikja: "+teljari);
      System.out.println("Tölvan hefur unnið "+tolvavann+tleik);
      System.out.println("Þú hefur unnið "+leikmadurvann+nleik);
     
      System.out.print("\nViltu spila annan leik?");
      svar = lesa.next();
    } while (svar.equals ("já") || svar.equals ("ja"));
   
    if (svar.equals ("nei")) System.out.println("\nBless");   
  }
 
  public static int notandiSpilar() {
    Scanner lesa = new Scanner(System.in);
    String svar = "";
    int summa = 0;
    do {
      int spil = gefaSpil();
      summa = summa+spil;
      if (summa == 21) break;
      if (summa > 21) break;
      System.out.print("Þú fékkst "+spil+" og ert samtals með "+summa+". Viltu annað spil?");
      svar = lesa.next();
    } while (svar.equals ("já") || svar.equals ("ja"));
   
    System.out.println("Þú fékkst samtals "+summa+"\n");
    return summa;   
  }
 
  public static int tolvaSpilar() {
    int summa = 0;
    do {
      int spil = gefaSpil();
      summa = summa+spil;
      System.out.println("Tölvan fékk "+spil);
    } while (summa <= 16);
   
    System.out.println("Tölvan fékk samtals "+summa);
    return summa;   
  }
 
  public static int gefaSpil() {
    int[] spil = {1,2,3,4,5,6,7,8,9,10,10,10,10};
    int numer = (int) (Math.random()*13);   
    int skilaspil = spil[numer];   
    return skilaspil;
  }
}


Er samt ekki viss með gefaSpil fallið. Er þetta ekki alveg rétt hugsun? spil 10-13 gefa bara 10 stig ekki satt?

Er búinn að keyra þetta fram og aftur og virkar bara fínt. En þar sem þetta eru random tölur þá er erfitt að keyra fram allar mögulegar niðurstöður.

Re: Java hjálp...

Sent: Mið 06. Okt 2010 13:59
af ManiO
KermitTheFrog skrifaði:Er búinn að keyra þetta fram og aftur og virkar bara fínt. En þar sem þetta eru random tölur þá er erfitt að keyra fram allar mögulegar niðurstöður.



Getur náttúrulega svindlað á því ;)

Re: Java hjálp...

Sent: Mið 06. Okt 2010 14:06
af dori
Mín $0.02:
Í main fallinu ertu með if setningu til að prenta út leikmaður/tölva vann og svo aðra til að uppfæra teljara. Skelltu því nú í sömu if setninguna. Svo skaltu ath. hvort þú þurfir elseif fyrir "tölva vann" og hvað það er sem kemur hvorki fyrir "leikmaður vann" né "tölva vann" (sér í lagi þar sem í hinni if setningunni ertu með venjulegt else).

Varðandi gefa spil dótið. Það væri auðvitað lang skemmtilegast ef þú myndir nenna að búa til stokk (eða nokkra stokka, eru ekki venjulega notaðir margir stokkar) og segja fólki nákvæmlega hvaða spil það fékk. Annars þá er þetta allt í lagi þar sem dreifingin ætti að vera jöfn. Nema náttúrulega að ás á að geta verið 1 og 11. Það þarf talsvert meiri 21 lógík til að það virki samt.

EDIT:
Ég myndi skoða það að búa til svona game object, eitthvað sem kann alla 21 lógíkina (sprunginn/ás shittið/bera saman hendur etc.)

Re: Java hjálp...

Sent: Mið 06. Okt 2010 15:45
af KermitTheFrog
Eitt sem ég var að fatta, ætti Math.rand ekki að vera sinnum 12? Eða á það að vera 13? Telst núllið ekki með?

Ég lagaði kóðann aðeins. Ég er samt búinn að gera miklu meira en beðið var um í verkefninu svo þetta ætti að vera ágætt.

Re: Java hjálp...

Sent: Mið 06. Okt 2010 15:56
af dori
KermitTheFrog skrifaði:Eitt sem ég var að fatta, ætti Math.rand ekki að vera sinnum 12? Eða á það að vera 13? Telst núllið ekki með?

Hvorugt sýnist mér.
Java doc skrifaði:public static double random()
Returns a double value with a positive sign, greater than or equal to 0.0 and less than 1.0. Returned values are chosen pseudorandomly with (approximately) uniform distribution from that range.
When this method is first called, it creates a single new pseudorandom-number generator, exactly as if by the expression

new java.util.Random
This new pseudorandom-number generator is used thereafter for all calls to this method and is used nowhere else.
This method is properly synchronized to allow correct use by more than one thread. However, if many threads need to generate pseudorandom numbers at a great rate, it may reduce contention for each thread to have its own pseudorandom-number generator.

Returns:
a pseudorandom double greater than or equal to 0.0 and less than 1.0.
See Also:
Random.nextDouble()

Þú gætir lent í því með þetta að fá 13. En þá þarf Math.random() að skila 1.0 basically þá ertu ekki að gera nóg til að hreinsa random númerið til að búa til nógu handahófskennda heiltölu á réttu bili.
Það er mun einfaldara fyrir þig að nota Random.nextInt(13). Þá færðu næstu heiltölu á hálfopna bilinu [0,13[

Re: Java hjálp...

Sent: Mið 06. Okt 2010 16:41
af KermitTheFrog
dori skrifaði:Þú gætir lent í því með þetta að fá 13. En þá þarf Math.random() að skila 1.0 basically þá ertu ekki að gera nóg til að hreinsa random númerið til að búa til nógu handahófskennda heiltölu á réttu bili.
Það er mun einfaldara fyrir þig að nota Random.nextInt(13). Þá færðu næstu heiltölu á hálfopna bilinu [0,13[


Ok, kennarinn kenndi okkur að nota Math.random*13 og kötta svo aukastafina af með því að breyta henni í int.

Re: Java hjálp...

Sent: Mið 06. Okt 2010 16:57
af dori
KermitTheFrog skrifaði:Ok, kennarinn kenndi okkur að nota Math.random*13 og kötta svo aukastafina af með því að breyta henni í int.

Vá, ég las ekki það sem ég vitnaði í. Math.random() er með eftirskilyrði að hann skilar double á hálfopna bilinu [0,1[ þannig að þú færð aldrei 13.

En fólk virðist almennt mæla með Random.nextInt og Random almennt. Ég veit reyndar ekki hvort er hraðvirkara, getur tékkað á því þó það skipti svosem ekki máli þannig séð (frekar hafa skýran kóða en hraðan kóða nema í einhverjum jaðartilvikum).