Arne Skrevet 18. mars 2007 Del Skrevet 18. mars 2007 Hei! Eg har lest litt i ei bok eg lånte på biblioteket. Eg trudde det skulle virke, men neinei... Programmet skal kunne gjere to ting med to brukarinput. 1. Du tastar inn eit tal. 2. Du vel om du vil finne kvadrattalet (kv) eller kubikktalet (ku). 3. Om du har tasta inn "kv", får du opp kvadrattalet til det du tasta inn på 1. (tal*tal). Om du har tasta inn "ku", får du opp kubikktalet til det du tasta inn på 1. (tal*tal*tal). Dette er berre eit øvingsprogram, men det er jo kjekt å lage litt program utanom dei som er ferdig skrivne ned iboka! Uansett, nok bull, her er koden: import javax.swing.JOptionPane; class finnKubikktal { public static void main(String[] args) { Double number = JOptionPane.showInputDialog("Tast inn talet du vil finne meir informasjon om:"); String type = JOptionPane.showInputDialog("Vil du finne kvadrattalet (kv) eller kubikktalet (ku)?"); String varType = string.parseString(type); int kufinal = number * number * number; int kvfinal = varNumber * varNumber; if (varType == "ku") { JOptionPane.showMessageDialog(null, "Kubikktalet til " + number + " er " + kufinale + " ."); } if (varType == "kv") { JOptionPane.showMessageDialog(null, "Kvadrattalet til "+ number + " er " + kvfinale + " ."); } else { JOptionPane.showMessageDialog(null, "Du har skrive inn ein ugyldig verdi!"); } System.exit(0); } } Eg veit det er rotete å sjå gjennom, eg har god orden i kjeldekoda mi, men det vert rotete å sjå på når eg limar inn i tekstboksen. Her er feilmeldingane som eg får: kvku.java:4: incompatible typesfound : java.lang.String required: java.lang.Double Double number = JOptionPane.showInputDialog("Tast inn talet du v il finne meir informasjon om:"); ^ kvku.java:7: cannot find symbol symbol : variable string location: class finnKubikktal String varType = string.parseString(type); ^ kvku.java:8: possible loss of precision found : double required: int int kufinal = number * number * number; ^ kvku.java:9: cannot find symbol symbol : variable varNumber location: class finnKubikktal int kvfinal = varNumber * varNumber; ^ kvku.java:9: cannot find symbol symbol : variable varNumber location: class finnKubikktal int kvfinal = varNumber * varNumber; ^ kvku.java:11: cannot find symbol symbol : variable kufinale location: class finnKubikktal JOptionPane.showMessageDialog(null, "Kubikktalet til " + number + " er " + kufinale + " ."); ^ kvku.java:14: cannot find symbol symbol : variable kvfinale location: class finnKubikktal JOptionPane.showMessageDialog(null, "Kvadrattalet til "+ number + " er " + kvfinale + " ."); ^ 7 errors Ha ein fortsatt god sundag! Lenke til kommentar
Josten Skrevet 18. mars 2007 Del Skrevet 18. mars 2007 (endret) Er ikke noen ekspert i java, men noe jeg hvertfall ser er at du prøver å gjøre om en double til en int. Du skriver først "double number = ..." for så å skrive "int kufinal = number*number *number". Bytt ut int med double hvertfall. Dessuten kan jeg ikke se at du deklarerer variabelen varNumber. Edit: Dette bør funke. Hvis det er noen av forandringene du lurer på, er det bare å spørre. import javax.swing.JOptionPane; class finnKubikktal { public static void main(String[] args) { String numberstr = JOptionPane.showInputDialog("Tast inn talet du vil finne meir informasjon om:"); String type = JOptionPane.showInputDialog("Vil du finne kvadrattalet (kv) eller kubikktalet (ku)?"); double number = Double.parseDouble(numberstr); double kufinal = number * number * number; double kvfinal = number * number; if (type.equals("ku")) { JOptionPane.showMessageDialog(null, "Kubikktalet til " + number + " er " + kufinal + " ."); } if (type.equals("kv")) { JOptionPane.showMessageDialog(null, "Kvadrattalet til " + number + " er " + kvfinal + " ."); } else { JOptionPane.showMessageDialog(null, "Du har skrive inn ein ugyldig verdi!"); } System.exit(0); } } Endret 18. mars 2007 av Josten Lenke til kommentar
JFrame Skrevet 18. mars 2007 Del Skrevet 18. mars 2007 Måtte prøve meg på den selv også. Gjorde det litt annerledes, men jeg ville heller testet på tall (f.eks velg 1 eller 2) enn kv eller ku. btw, hvordan får man koden i "dropdown" vindu? import javax.swing.JOptionPane; // importerer hele pakka, alle funksjonene i den. class finnKubikktal { public static void main(String[] args) { String Lest_tall = JOptionPane.showInputDialog("Tast inn talet du vil finne meir informasjon om:"); // Gjør strengen om til heltall double Tall = Double.parseDouble(Lest_tall); String type = JOptionPane.showInputDialog ("Vil du finne verdien til tallet i et kvadrat (kv)," + "/n" + "eller verdien til tallet i et kubikk (ku)?"); double Kubikk = Tall * Tall * Tall; double Kvadrat = Tall * Tall; if (type.equals("ku")) { JOptionPane.showMessageDialog(null, "Kubikktalet til " + Tall + " er " + Kubikk + " ."); } if (type.equals("kv")) { JOptionPane.showMessageDialog(null, "Kvadrattalet til "+ Tall + " er " + Kvadrat + " ."); } else { JOptionPane.showMessageDialog(null, "Du har skrive inn ein ugyldig verdi!"); } System.exit(0); } } Lenke til kommentar
Arne Skrevet 18. mars 2007 Forfatter Del Skrevet 18. mars 2007 Oki, takk, skal teste det! Forresten, eg har programmert ein del PHP før, og der har eg alltid brukt == i if. Kvifor brukar de xxx.equal("xx")? Er det mange andre store forskjelar frå PHP og JAVA? Forskjelen med (stor) støtte for OOP er eg klar over. Støtta for det i PHP5 var ikkje så bra. (og endå minde i v. 4). Lenke til kommentar
Josten Skrevet 18. mars 2007 Del Skrevet 18. mars 2007 På tall, booleans og en del andre, brukes ==, slik som if(tall == 5). Men på String må man bruke xxx.equals("xx"). Akkurat hvorfor det er slik vet jeg ikke. Lenke til kommentar
Arne Skrevet 18. mars 2007 Forfatter Del Skrevet 18. mars 2007 Tusen takk skal de ha! Eg brukte min beste ven, Google, til å finne ut litt om else if, slik at eg ikkje får den feilmeldingen om eg tastar inn "ku". Har lært ganske mykje av dette, men eg lurer på ein ting til. Om eg vil vise programma mine til vener (som ikkje kan så mykje om datamaskiner), fins det ein anna måte å kjøre dette programmet på enn å gå inn i CMD og endre directory til den bestemte mappa og skrive "java *klasse*"? Som ein fil ein berre kan dobbeltklikke på, eller noko slikt? Lenke til kommentar
JFrame Skrevet 18. mars 2007 Del Skrevet 18. mars 2007 Du kan lage en jar fil du kan dobbeltklikke på. Men du trenger NetBeans , JBuilder e.l. Står mer om det i denne tråden: https://www.diskusjon.no/lofiversion/index.php/t658387.html Lenke til kommentar
Arne Skrevet 18. mars 2007 Forfatter Del Skrevet 18. mars 2007 Takk for lenken, JFrame. Er du flink med Java? Har du tips til kva andre program eg kan lage meg for øvingens skyld? Litt kjipt å berre kopiere og lime inn frå bøker. Lenke til kommentar
Arne Skrevet 19. mars 2007 Forfatter Del Skrevet 19. mars 2007 Eg lagde ein kalkulator: Kjelde Maskinkode Han ser ut til å funke greitt. Kunne ønske meg knappar i staden for å måtte skrive inn p/m/d/g, men det lærar eg sikkert seinare. Les forresten ei bok som heiter Programmering i java, men eg har lånt han på biblioteket. Om eg klarar dette med java, kjem eg nok heilt sikkert til å kjøpe ei bok om emnet. Har lånt denne boka litt for lenge av biblioteket. Har vurdert "Rett på java". Nokon som har innvendingar? Har nokon forslag til andre øvingsprogram eg kan lage? Dette var jo ganske kjekt! Lenke til kommentar
JFrame Skrevet 19. mars 2007 Del Skrevet 19. mars 2007 (endret) Gjorde et par endringer, så nå virker det 100%. import javax.swing.JOptionPane; // importerer hele pakka, alle funksjonene i den. class finnKubikktal { public static void main(String[] args) { String Lest_tall = JOptionPane.showInputDialog("Tast inn talet du vil finne meir informasjon om:"); // Gjør strengen om til heltall double Tall = Double.parseDouble(Lest_tall); String type = JOptionPane.showInputDialog ("Vil du finne verdien til tallet i et kvadrat (kv)," + "\n" + "eller verdien til tallet i et kubikk (ku)?"); double Kubikk = Tall * Tall * Tall; double Kvadrat = Tall * Tall; if (type.equals("ku")) { JOptionPane.showMessageDialog(null, "Kubikktalet til " + Tall + " er " + Kubikk + " ."); } else if (type.equals("kv")) { JOptionPane.showMessageDialog(null, "Kvadrattalet til "+ Tall + " er " + Kvadrat + " ."); } else { JOptionPane.showMessageDialog(null, "Du har skrive inn ein ugyldig verdi!"); } System.exit(0); } } Sender deg en PM Arne. Ikke gal den kalkulatoren Endret 19. mars 2007 av JFrame Lenke til kommentar
Arne Skrevet 19. mars 2007 Forfatter Del Skrevet 19. mars 2007 No har eg laga ein kalkulator, men eg har ikkje fått kompilert han, så eg har nok desverre ikkje fått skjekka for logiske feil. Uansett, her er koden: http://arneweb.com/java/ukalkulator/ukalkulator.java Eg får to feilmeldingar, men det vert rotete å poste dei her på forumet, så prøv å kompilere sjølv. Takkar for hjelp så langt. Lenke til kommentar
Arne Skrevet 19. mars 2007 Forfatter Del Skrevet 19. mars 2007 JFrame hjalp meg på MSN, så no er eg kvitt syntaxfeila, no er det berre logiske feil igjen. http://arneweb.com/java/ukalkulator/ukalkulator.java Dette er kjeldekoden. http://arneweb.com/java/ukalkulator/ukalkulator.class Det var maskinkoden. Lenke til kommentar
JFrame Skrevet 19. mars 2007 Del Skrevet 19. mars 2007 import javax.swing.JOptionPane; class ukalkulator { public static void main(String[] args) { boolean cont = true; double soFar = 0; while (cont == true) { String readNumber = JOptionPane.showInputDialog("Kva tal vil du velje?"); double number = Double.parseDouble(readNumber); soFar = soFar + number; while (cont == true) { String operation = JOptionPane.showInputDialog("Kva vil du gjere med " + soFar + " ? \n D = Dele, G = Gange, P = Plusse, M = Trekke i frå og E = avslutte"); if (operation.equals("G")) { String operande = JOptionPane.showInputDialog("Kva vil du gange " + soFar + " med?"); number = Double.parseDouble(operande); soFar = soFar * number; } else if (operation.equals("D")) { String operande = JOptionPane.showInputDialog("Kva vil du dele " + soFar + " på?"); number = Double.parseDouble(operande); soFar = soFar / number; } else if (operation.equals("M")) { String operande = JOptionPane.showInputDialog("Kva vil du trekkje frå " + soFar + " ?"); number = Double.parseDouble(operande); soFar = soFar - number; } else if (operation.equals("P")) { String operande = JOptionPane.showInputDialog("Kva vil du plusse " + soFar + " med?"); number = Double.parseDouble(operande); soFar = soFar + number; } else if (operation.equals("E")) { cont = false; } } } JOptionPane.showMessageDialog(null, "Du er ferdig med kalkulasjonane, og resultatet vart " + soFar + " !"); } } Lenke til kommentar
Arne Skrevet 19. mars 2007 Forfatter Del Skrevet 19. mars 2007 Hurra, det verka! Den einaste forskjelen var at eg hadde gløymt å gjere om "operande" til number! Lenke til kommentar
qualbeen Skrevet 20. mars 2007 Del Skrevet 20. mars 2007 På tall, booleans og en del andre, brukes ==, slik som if(tall == 5). Men på String må man bruke xxx.equals("xx"). Akkurat hvorfor det er slik vet jeg ikke.8181919[/snapback] Objekter bruker man .equals() på. Dette fordi to erlikhets-tegn mellom to objekter kun sjekker minneadressen til de to objektene (om jeg ikke tar helt feil). Mao: dobbelt erlikhetstegn sjekker ikke innholdet i objektene, derfor equals()-metoden. man kan bruke to erlikhetstegn på følgene (jeg har sikkert glemt noe): int, long, double, boolean, enum, char osv... btw, hvordan får man koden i "dropdown" vindu?8181643[/snapback] "Dropdown-liste" fikser man vha [ skjul ]-taggen: [skjul]dette er skjult tekst[/skjul] Lenke til kommentar
aC Skrevet 20. mars 2007 Del Skrevet 20. mars 2007 På tall, booleans og en del andre, brukes ==, slik som if(tall == 5). Men på String må man bruke xxx.equals("xx"). Akkurat hvorfor det er slik vet jeg ikke.8181919[/snapback] Objekter bruker man .equals() på. Dette fordi to erlikhets-tegn mellom to objekter kun sjekker minneadressen til de to objektene (om jeg ikke tar helt feil). Mao: dobbelt erlikhetstegn sjekker ikke innholdet i objektene, derfor equals()-metoden. Og som alle sikkert skjønte er ikke String en primitiv datatype, men en klasse som skal gjøre det enklere å håndere mere en en char, i andre språk (c og henholdsvis c++) er string's alltid bare array's av chars (ikke STL inkl.) Lenke til kommentar
erlingwe Skrevet 24. mars 2007 Del Skrevet 24. mars 2007 På tall, booleans og en del andre, brukes ==, slik som if(tall == 5). Men på String må man bruke xxx.equals("xx"). Akkurat hvorfor det er slik vet jeg ikke. 8181919[/snapback] == Sammenligner bare verdier - equals sammenlikner objekter. String er objekt.. Lenke til kommentar
Arne Skrevet 27. mars 2007 Forfatter Del Skrevet 27. mars 2007 Ok, eg har fått svar på det no, takk! Forresten, er det nokon som har tips til kva småprogram eg kan lage? Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå