Síða 1 af 5

Java/Python/C++ hjálp...

Sent: Mið 13. Jan 2010 22:04
af KermitTheFrog

Kóði: Velja allt

import java.util.Scanner;
public class hitastig1 {
  public static void main(String[] args){
    System.out.println("Þetta forrit breytir gráðum úr Farenheit yfir í Celsius");
    Scanner lesa = new Scanner(System.in);
    System.out.println("Sláðu inn Farenheit gráður: ");
    int farenheit;
    farenheit = lesa.nextInt();
    int celsius;
    celsius = (5/9)*(farenheit-32);
    System.out.println(+farenheit+"°F eru "+celsius+"°C");
  }
}


Ég fæ alltaf núll út. Hvað er ég að gera vitlaust?

Re: Java hjálp...

Sent: Mið 13. Jan 2010 22:08
af hagur
Þú ert að nota heiltölubreytur (int). Þú verður að nota double í staðinn fyrir int.

Prufaðu þetta:

Kóði: Velja allt

import java.util.Scanner;
public class hitastig1 {
  public static void main(String[] args){
    System.out.println("Þetta forrit breytir gráðum úr Farenheit yfir í Celsius");
    Scanner lesa = new Scanner(System.in);
    System.out.println("Sláðu inn Farenheit gráður: ");
    double farenheit;
    farenheit = lesa.nextDouble();
    double celsius;
    celsius = (5/9)*(farenheit-32);
    System.out.println("Það eru: " + celsius);
  }
}

Re: Java hjálp...

Sent: Mið 13. Jan 2010 22:12
af KermitTheFrog
Ég var nú búinn að reyna double líka. Það kemur samt núll út.

Re: Java hjálp...

Sent: Mið 13. Jan 2010 22:16
af hagur
Ok, smá fljótfæri í mér ... þú ert ennþá með integer á tveim stöðum í kóðanum, þ.e þar sem þú ert að deila 5 með 9. Þetta túlkar java sem integer og útkoman úr því verður 0, en ætti að vera 0,5555

Þú gerir í staðinn 5.0/9.0 sem þýðir að þú ætlar ekki að gera heiltöludeilingu, heldur nota double.

Kóði: Velja allt

import java.util.Scanner;
public class hitastig1 {
  public static void main(String[] args){
    System.out.println("Þetta forrit breytir gráðum úr Farenheit yfir í Celsius");
    Scanner lesa = new Scanner(System.in);
    System.out.println("Sláðu inn Farenheit gráður: ");
    double farenheit;
    farenheit = lesa.nextDouble();
    double celsius;
    celsius = (5.0/9.0)*(farenheit-32);
    System.out.println("Það eru: " + celsius);
  }
}

Re: Java hjálp...

Sent: Mið 13. Jan 2010 22:26
af KermitTheFrog
Sweeet, það gekk. En er ekki leið til að birta bara 2 aukastafi eða álíka? það kemur alltaf einhver romsa sem lúkkar ekkert vel.

Re: Java hjálp...

Sent: Mið 13. Jan 2010 22:27
af hagur
Jú, það er örugglega lítið mál.

Ég er reyndar ekki mikill java-maður og kann þetta ekki utanað í java, en ég myndi googla t.d "Java number formatting" eða álíka.

Re: Java hjálp...

Sent: Mið 13. Jan 2010 22:40
af Blues-
KermitTheFrog skrifaði:Sweeet, það gekk. En er ekki leið til að birta bara 2 aukastafi eða álíka? það kemur alltaf einhver romsa sem lúkkar ekkert vel.


Notaðu java.text.DecimalFormat

Fyrir tveggja talna precision ..=> new DecimalFormat("0.##").format((double)celcius);

dæmi ..

Kóði: Velja allt

NumberFormat formatter = new DecimalFormat("#0.00");
System.out.println("Hitinn er: "+formatter.format(celcius));

Re: Java hjálp...

Sent: Fim 14. Jan 2010 11:02
af KermitTheFrog
Jæja, takk fyrir það. En ef ég ætla að láta slá inn nafn?

nvm, fattaði þetta...

Re: Java hjálp...

Sent: Fös 05. Feb 2010 09:45
af KermitTheFrog
Smá meiri hjálp?

Kóði: Velja allt

import java.util.Scanner;
public class talnabil2 {
  public static void main(String[] args){
    System.out.println("Þetta er forrit sem skrifar allar tölur milli tveggja talna");
    Scanner lesa = new Scanner(System.in);
    System.out.println("Fyrri talan: ");
    int fyrri = lesa.nextInt();
    System.out.println("Seinni talan: ");
    int seinni = lesa.nextInt();
   
    do{
      if (fyrri < seinni)
        System.out.println(fyrri+1);
      fyrri++;
    } while (fyrri < seinni);
   
    if (fyrri > seinni)
      System.out.println("Fyrri talan á að vera lægri en sú síðari");     
  }
}


Fyrirmælin eru að búa til forrit sem biður um 2 tölur, sú fyrri minni en sú síðari. Forritið á síðan að birta allar tölur sem eru á milli þeirra. Ef fyrri er stærri en seinni þá á að koma villumelding og ef það eru engar tölur á milli þeirra á það einnig að gefa villumeldingu.

Ég er búinn með allt nema síðasta skilyrðið og get enganveginn framkvæmt það. Help please?

Re: Java hjálp...

Sent: Fös 05. Feb 2010 09:53
af hagur
Ef það eru engar tölur á milli þeirra .... þýðir það þá ekki bara að fyrri talan er sú sama og seinni?

Kóði: Velja allt

import java.util.Scanner;
public class talnabil2 {
  public static void main(String[] args){
    System.out.println("Þetta er forrit sem skrifar allar tölur milli tveggja talna");
    Scanner lesa = new Scanner(System.in);
    System.out.println("Fyrri talan: ");
    int fyrri = lesa.nextInt();
    System.out.println("Seinni talan: ");
    int seinni = lesa.nextInt();
   
    if (fyrri > seinni)
    {
        System.out.println("Fyrri talan á að vera lægri en sú síðari");
    }
    else if (fyrri == seinni)
    {
        System.out.println("Engar tölur á milli talnanna!");
    }
    else
    {
          do{
               if (fyrri < seinni)
                   System.out.println(fyrri+1);
               fyrri++;
           } while (fyrri < seinni);
    }

  }
}

Re: Java hjálp...

Sent: Fös 05. Feb 2010 09:58
af KermitTheFrog
Jú, en það gildir líka ef fyrri er t.d. 13 og seinni 14

EDIT: held ég hafi leyst þetta:

Kóði: Velja allt

// Skilaverkefni 14
// Daníel Grétarsson
// 5. feb. 2010
import java.util.Scanner;
public class talnabil2 {
  public static void main(String[] args){
    System.out.println("Þetta er forrit sem skrifar allar tölur milli tveggja talna");
    Scanner lesa = new Scanner(System.in);
    System.out.println("Fyrri talan: ");
    int fyrri = lesa.nextInt();
    System.out.println("Seinni talan: ");
    int seinni = lesa.nextInt();
   
    if (fyrri >= seinni)
      System.out.println("Fyrri talan á að vera lægri en sú síðari");
    else if (fyrri == seinni-1)
      System.out.println("Engar tölur á milli talnanna");
   
    else {
      do{
        if (fyrri < seinni)
          System.out.println(fyrri+1);
        fyrri++;
      } while (fyrri < seinni);
    }
   
  }
}


En forritið birtir samt síðustu töluna líka. Það birti líka fyrstu töluna í byrjun en ég tæklaði það með því að henda fyrri+1 inn en hvernig get ég losað mig við síðustu töluna?
Dæmi um virkni:

Kóði: Velja allt

Welcome to DrJava.  Working directory is N:\gogn\Töl 103\Skilaverkefni\Skilaverkefni 14
> java talnabil2
Þetta er forrit sem skrifar allar tölur milli tveggja talna
Fyrri talan:
 9
Seinni talan:
 18
10
11
12
13
14
15
16
17
18
>

Re: Java hjálp...

Sent: Fös 05. Feb 2010 10:09
af KermitTheFrog
Weehee, náði að laga þetta :D. Nú er ég búinn í skólanum klukkan tvö.

Re: Java hjálp...

Sent: Fös 05. Feb 2010 14:07
af Daz

Kóði: Velja allt

-snipsnap-
 
      do{
        if (fyrri < seinni)
          System.out.println(fyrri+1);
        fyrri++;
      } while (fyrri < seinni);
   
???

Kóði: Velja allt

fyrri++; // í lagi hér því þú hefur nú þegar staðfest að mismunur talnanna er minnst 2
while(fyrri < seinni){
   System.out.println(fyrri++);
}


Óþarfa 2 samanburðir þarna hjá þér (bæði while(fyrri < seinni ) og (if (fyrri < seinni)) Svo skrifarðu út fyrri+1 sem skemmir alveg samanburðinn :)

Re: Java hjálp...

Sent: Fös 05. Feb 2010 14:43
af Slick
Mér datt í hug að henda inn hérna recursive lausn þar sem enginn stakk upp á henni :)
En þetta er reynda í python ekkert mál að færa það yfir á java.

Kóði: Velja allt

def recursive_Call(first, last, Begin = True):
    if Begin and first >= last:
        print "Error first equal or bigger than last!"
    if (first + 1) < last:
        print first + 1 #To order number by ASC
        recursive_Call(first + 1,last,False)
        #print first + 1 #To order number by DESC
recursive_Call(0,10)

Re: Java hjálp...

Sent: Þri 09. Feb 2010 12:53
af KermitTheFrog
Jæja, nú er ég í tómu tjóni. Við eigum að búa til spilið 21 og ég er alveg strand. Fyrirmælin eru eftirfarandi:

Búið til forrit sem líkja á eftir því að við séum að spila 21 í tölvunni. Leikurinn fer þannig fram að tölvan byrjar á að láta leikmann spila. Tölvan gefur þá spil frá 1 fyrir ás upp í 13 fyrir kóng. Síðan spyr tölvan hvort leikmaður vilji fá annað spil. Tölvan leggur saman gildin á spilunum sem leikmaður hefur fengið og ef heildarsumman er stærri en 21 hefur leikmaður tapað spilinu en tölvan unnið. Ef leikmaður stoppar án þess að hafa sprungið gefur tölvan sjálfri sér spil. Tölvan notar þær reglur að hún stoppar ef heildarstigafjöldi er 16 eða meira en heldur annars áfram.
Eftirfarandi reglur eru notaðar til að ákveða hver vinnur spilið:
Ef sigafjöldi leikmanns er hærri en 21 þá hefur hann sprungið og tapað spilinu. Þá þarf tölvan ekki að gefa sjálfri sér spil. Ef leikmaður springur ekki en tölvan springur (þ.e. fær meira en 21) hefur leikmaðurinn unnið. Ef hvorki leikmaður né tölva springa, þá vinnur sá sem hefur fleiri stig. Ef tölva og leikmaður hafa jafn mörg stig þá vinnur tölvan. Gera má ráð fyrir að hvert spil gildi frá einum upp í 13.
Dæmi um hvernig leikur getur spilast :
(Það sem tölva skrifar er í þessum fonti, en það sem notandi slær inn í þessum)
Nú hefst leikurinn:
þú fékkst 9 og ert kominn með samtals 9, viltu fleiri spil? já
þú fékkst 7 og ert kominn með samtals 16, viltu fleiri spil? já
þú fékkst 6 og ert kominn með samtals 22, viltu fleiri spil? nei
Þú sprakkst, tölvan vann.
Heildarfjöldi spila: 1
Tölva hefur unnið 1 spil
Þú hefur unnið 0 spil
Viltu spila annað spil? já
þú fékkst 8 og ert kominn með samtals 8, viltu fleiri spil? já
þú fékkst 2 og ert kominn með samtals 10, viltu fleiri spil? já
þú fékkst 8 og ert kominn með samtals 18, viltu fleiri spil? nei
tölvan fékk 3
tölvan fékk 4
tölvan fékk 10
tölvan fékk samtals 17
þú vannst leikinn
Heildarfjöldi spila: 2
Tölva hefur unnið 1 spil
Þú hefur unnið 1 spil
Viltu spila annað spil? nei


Ég er alls ekki að biðja um heilan kóða til að copy paste-a, ég að biðja um leiðbeiningar um hvernig ég get gert þetta.

Svo verðið þið að afsaka ef þetta er svo vitlaust gert að það mætti skjóta mig. Mig vantar bara hjálp með þetta.

Re: Java hjálp...

Sent: Þri 09. Feb 2010 23:19
af KermitTheFrog
PLEASE HELP!!

Ég er einhverju nær, en þetta virkar samt ekki eins og skyldi

*hér var kóði*

tölvan stoppar ekki í 16 og hún fer líka yfir 21 stundum :/ hvernig preventa ég það?

EDIT: Mér sýnist ég hafa náð nokkuð góðum tökum á þessu:

Kóði: Velja allt



import java.util.Scanner;
public class spil21{
  public static void main(String[] args){
    Scanner lesa = new Scanner(System.in);
    int svar;
    int summa = 0;
    int aftur;
   
    do{
      System.out.println("Nú hefst leikurinn");
      do {
        svar = 'N';
        int spil = (int) (Math.random()*13)+1;
        summa = summa + spil;
        System.out.println("Þú fékkst "+spil+" og samtals ertu með "+summa);
        if (summa < 21){
          System.out.println("Viltu annað spil? (0 fyrir já, 1 fyrir nei)");
          svar = lesa.nextInt();}
      } while (svar == 0);
     
      if (summa > 21)
        System.out.println("Talan er hærri en 21, þú hefur tapað");
     
      int summa2 = 0;
      if (svar == 1){
        do{
          int tölva = (int) (Math.random()*13)+1;
          summa2 = summa2 + tölva;
        } while (summa2 <= 16);
      }
      if (summa < 21)
        System.out.println("Tölvan fékk: "+summa2);
     
      if (summa2 > summa && summa2 < 22)
        System.out.println("Því miður, tölvan vann");
     
      else if (summa < 21)
        System.out.println("Til hamingju! Þú vannst");
     
      System.out.println("Viltu spila aftur? (0 fyrir já, 1 fyrir nei)");
      aftur = lesa.nextInt();
    } while (aftur == 0);
    if (aftur == 1)
      System.out.println("Bless");
  }
}


Ég er samt í veseni með það að þegar ég er búinn með 1 spil og spila annað þá bætist ofaná töluna sem ég endaði með í síðasta spili. S.s. ef ég endaði með 19 í fyrsta spilinu, spila aftur og fæ t.d. 6 í fyrstu umferð í öðru spilinu þá skrifast út að ég sé með 25 stig, en ekki bara 6. How to fix?

Re: Java hjálp...

Sent: Mið 10. Feb 2010 22:56
af KermitTheFrog
Jæja, þá virðist þetta vera komið eiginlega bara hjá mér:

Kóði: Velja allt

// Skilaverkefni 16
// Daníel Grétarsson
// 10. feb. 2010
import java.util.Scanner;
public class hundabrund{
  public static void main(String[] args){
    Scanner lesa = new Scanner(System.in);
    int svar;
    int summa = 0;
    int aftur;
    int tölvavann = 0;
    int leikmadurvann = 0;
   
    System.out.println("Nú hefst leikurinn");
    do{
      do {
        svar = 'N';
        int spil = (int) (Math.random()*13)+1;
        summa = summa + spil;
        System.out.println("Þú fékkst "+spil+" og samtals ertu með "+summa);
        if (summa < 21){
          System.out.println("Viltu annað spil? (0 fyrir já, 1 fyrir nei)");
          svar = lesa.nextInt();}
      } while (svar == 0);
     
      if (summa > 21)
        System.out.println("Talan er hærri en 21, þú hefur tapað");
     
      int summa2 = 0;
      if (svar == 1){
        do{
          int tölva = (int) (Math.random()*13)+1;
          summa2 = summa2 + tölva;
        } while (summa2 <= 16);
      }
      if (summa < 21)
        System.out.println("Tölvan fékk: "+summa2);
     
      if (summa == 21)
        System.out.println("Þú fékkst 21! Til hamingju, þú vannst!");
     
      if (summa2 >= summa && summa2 < 22 || summa > 21)
        System.out.println("Því miður, tölvan vann");
     
      else if (summa < summa2 && summa < 21 || summa2 > 21)
        System.out.println("Til hamingju! Þú vannst");
     
      System.out.println("Viltu spila aftur? (0 fyrir já, 1 fyrir nei)");
      aftur = lesa.nextInt();
     
      if (aftur == 0)
        summa = 0;
     
      if (summa2 >= summa && summa2 < 22 || summa > 21)
        tölvavann = tölvavann + 1;
     
      if (summa > summa2 && summa < 21 || summa2 > 21 || summa == 21)
        leikmadurvann = leikmadurvann + 1;
     
      System.out.println("Tölvan hefur unnið "+tölvavann+" leiki");
      System.out.println("Þú hefur unnið "+leikmadurvann+" leiki");
      System.out.println("-----------------");
    } while (aftur == 0);
   
    if (aftur == 1)
      System.out.println("Bless");
   
  }
}

Re: Java hjálp...

Sent: Fim 11. Feb 2010 10:39
af Daz
Það má alveg hafa þetta pínu meira Object oriented :)

Kóði: Velja allt

public class Spil {
   private int cardVal;
   //private String suiteName;
   //private String cardName;
   
   public Spil(){
      cardVal = (int) ((Math.random()*13)+1);
   }
   
   public int getCardVal() {
      return cardVal;
   }
   
   public String toString(){      
      return Integer.toString(cardVal);
      //return suiteName+cardName;
   }
}


Ef þetta er freistandi getur þú dundað þér við að útfæra nafn og lit á spilinu líka.

Svo væri líka hægt að búa til heilann stokk til að tryggja að það komi örugglega ekki of mörg spil af neinu tagi.

Re: Java hjálp...

Sent: Fim 11. Feb 2010 11:53
af KermitTheFrog
Jáb, en þar sem þetta er Töl 103 og við erum bara búin að læra takmarkað á þetta þá held ég að þetta dugi fínt.

Re: Java hjálp...

Sent: Fim 11. Feb 2010 16:18
af GullMoli
KermitTheFrog ertu í Versló? Ég er nefnilega að gera nákvæmlega sama verkefnið.

Re: Java hjálp...

Sent: Fim 11. Feb 2010 16:47
af KermitTheFrog
Nei, er í FG bara.

Re: Java hjálp...

Sent: Sun 28. Feb 2010 23:10
af KermitTheFrog
Getur einhver í stuttu máli útskýrt fyrir mér hvernig maður getur látið notandann svara í bókstöfum?

Í staðinn fyrir að svara með 0 og 1:

Kóði: Velja allt

do {
        svar = 'N';
        int spil = (int) (Math.random()*13)+1;
        summa = summa + spil;
        System.out.println("Þú fékkst "+spil+" og samtals ertu með "+summa);
        if (summa < 21){
          System.out.println("Viltu annað spil? (0 fyrir já, 1 fyrir nei)");
          svar = lesa.nextInt();}
      } while (svar == 0);


Þá svarar notandinn með J og N ??? Er þetta eitthvað últra flókið?

Re: Java hjálp...

Sent: Mán 01. Mar 2010 00:46
af Phanto
While(svar == 'j') ;?
og hafa svar skilgreint sem char ekki int.

eða While(Character.ToUpperCase(svar) == 'J');

Re: Java hjálp...

Sent: Mán 01. Mar 2010 11:12
af KermitTheFrog
Ég nefnilega reyndi það:

Kóði: Velja allt



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


Það compileast ekki. Ég fæ:

1 error found:
File: C:\Users\Ding\Documents\=Documents\Java\Bull\melur.java [line: 10]
Error: C:\Users\Ding\Documents\=Documents\Java\Bull\melur.java:10: cannot find symbol
symbol : method nextChar()
location: class java.util.Scanner

Re: Java hjálp...

Sent: Mán 01. Mar 2010 14:33
af Phanto
Það er engin nextChar() aðferð

Kóði: Velja allt

    import java.util.Scanner;
    public class melur{
      public static void main(String[] args){
        Scanner lesa = new Scanner(System.in);
        char svar;
        string tmp;
        System.out.println("Ertu melur?");
        tmp = lesa.next();
        svar = tmp.charAt(0);
       
        if (svar == 'j')
          System.out.println("Flott mál");
        else
          System.out.println("Þá bendi ég þér á Melabúðina");
      }
    }