handdator

Visa fullständig version : Java-hjälp!


Stenberg
2005-11-10, 20:38
Är det någong java-räv därute som kan hjälpa mig? Sitter och programmerar en miniräknare, men får det fasiken inte att funka :furious:
Så har nån bra tips på bra forum eller nån här som kanske kan tänka sig att ta en titt på min kod och ge lite råd??

Dumleman
2005-11-10, 20:45
http://java.sun.com/j2se/1.5.0/docs/api/ :)

Stenberg
2005-11-10, 21:00
jo den sidan har jag tillbringat lite tid på om man säger så, men nu räcker det inte riktigt

The_RobRoy
2005-11-10, 21:00
haha sitter och gör en kalkylator i C++ nu :)

Bygger upp trädstrukterer och massa mys

JJ
2005-11-10, 21:02
Lägg ut koden då så vi kan skratta lite :D

Sappe
2005-11-10, 21:08
Det var ett tag sen man höll på men java men ja posta koden så kan jag se om jag kan hjälpa till.

jwzrd
2005-11-10, 21:14
Stenberg, ut med en fråga och en bit kod så ska vi se!

slappe
2005-11-10, 21:20
Om du har tillgång till boken 'Core Java Volume 1' så gör dom en kalkylator i kapitel 9.

Koden finns här om du vill tjuvkika:
http://www.horstmann.com/corejava/corejava.zip

/Slappe

Stenberg
2005-11-10, 21:48
Vet inte om jag vågar lägga upp nån kod, får väl skämmas =) Närå, men följande problem har jag:

¤Trycker jag på * eller / får jag 0 i displayfönstret, funkar alltså inte
¤Kan inte stänga ner programfönstret utan att stänga kommandotolken
¤=-knappen fungerar inte

Sen skulle jag vilja lägga till en komma-knapp så man kan mata in decimaltal, förslag på hur den metoden kan se ut?
Bifogar länkar.... Kalkylator innehåller metoder, KalkylatorFonster är precis vad det låter som och Testa kör programmet =)

http://linksforall.50megs.com/Kalkylator.java

http://linksforall.50megs.com/KalkylatorFonster.java

http://linksforall.50megs.com/Testa.java

Stenberg
2005-11-10, 21:52
Hm, verkar inte funka att klicka på länkarna. Men klistrar man in dem i adressfältet funkar det...

Stenberg
2005-11-12, 13:59
Det här ska funka (spara mål som):

http://members.fortunecity.se/stenberg69/Kalkylator.java
http://members.fortunecity.se/stenberg69/KalkylatorFonster.java
http://members.fortunecity.se/stenberg69/Testa.java

Stenberg
2005-11-13, 15:12
hm kör väl ut koden då:

Kalkylator.class

public class Kalkylator
{
public Kalkylator()
{
rensaRegister(); // Rensa variablerna
}

public void laggTillTal( int tal )
{
if(nySiffra)
{
// Om det är ett nytt tal som man börjar på
displayVarde = tal;
nySiffra = false;
}
else
{
// Om man fortsätter att utöka aktuella
// talet.
displayVarde = displayVarde * 10 + tal;
}
}

public void addera()
{
displayVarde = displayVarde + nuVarde;
enter();
}

public void subtrahera()
{
displayVarde = nuVarde - displayVarde;
enter();
}

public void multiplicera()
{
displayVarde = nuVarde * displayVarde;
enter();
}

public void dividera()
{
displayVarde = nuVarde / displayVarde;
enter();
}

public void cos()
{
displayVarde = Math.cos(nuVarde);
enter();
}

public void sin()
{
displayVarde = Math.sin(nuVarde);
enter();
}

public void tan()
{
displayVarde = Math.tan(nuVarde);
enter();
}

public void rensaRegister()
{
nuVarde = 0;
displayVarde = 0;
nySiffra = true;
}

public void enter()
{
nuVarde = displayVarde;
nySiffra = true;
}

public double displayValue()
{
return displayVarde;
}
private double nuVarde; // Senast beräknat värde
private double displayVarde; // Värdet i displa
private boolean nySiffra; // Talar om om nästa siffra som
// trycks in är början
// på ett nytt tal
}


KalkylatorFonster.java

import java.awt.*;
import java.awt.event.*;
import java.lang.*;
import corejava.*;

public class KalkylatorFonster extends CloseableFrame
{
// Skapar ett "räknarfönster"
// Gör nu inre klasser som beskriver knapparna

private class Knapp extends Button implements ActionListener
{

// Skapa själva knappen
private Knapp ( String displayString, int knappVarde )
{
super(displayString);
this.knappVarde = knappVarde;
addActionListener(this);
}

// Metod nedan anropas vid knapptryckning
public void actionPerformed( ActionEvent ae )
{
// Talar om för räknaren att en ny siffra
// har tryckts in
kalk.laggTillTal(knappVarde);
uppdateraDisplay();
}

private int knappVarde;
}
//Knappklassen slutar


public KalkylatorFonster()
{
super("MiniRäknare 1.0");

// Lägger till en "display" överst
display = new TextField(20);
display.setEditable(false);

setSize(300,300);
add(display,BorderLayout.NORTH);
GridLayout gl = new GridLayout(4,5); // Skapar ramen (matris)
// för knapparna
Panel panel = new Panel(gl);
add(panel,BorderLayout.CENTER); // Lägger ramen under
// displayen

// Lägger till knapparna enligt följande schema:
// 7 8 9 + Cos
// 4 5 6 - Sin
// 1 2 3 * Tan
// C 0 = /
//
// Där C = rensa (clear)


panel.add(new Knapp ("7",7));
panel.add(new Knapp ("8",8));
panel.add(new Knapp ("9",9));

// Använder nu unikt kommando för de "matematiska" knapparna,
// ett för varje

Button matteKnapp = new Button("+");
matteKnapp.addActionListener( new ActionListener(){
public void actionPerformed( ActionEvent ae )
{
kalk.addera(); // Ge order till räknaren
uppdateraDisplay(); // Uppdatera textfältet
}
}
);
panel.add(matteKnapp);
matteKnapp = new Button("Cos");
matteKnapp.addActionListener( new ActionListener()
{ public void actionPerformed( ActionEvent ae )
{
kalk.cos();
uppdateraDisplay();
}
}
);
panel.add(matteKnapp);

panel.add(new Knapp("4",4));
panel.add(new Knapp("5",5));
panel.add(new Knapp("6",6));
matteKnapp = new Button("-");
matteKnapp.addActionListener( new ActionListener()
{ public void actionPerformed( ActionEvent ae )
{
kalk.subtrahera();
uppdateraDisplay();
}
}
);
panel.add(matteKnapp);
matteKnapp = new Button("Sin");
matteKnapp.addActionListener( new ActionListener()
{ public void actionPerformed( ActionEvent ae )
{
kalk.sin();
uppdateraDisplay();
}
}
);
panel.add(matteKnapp);

panel.add(new Knapp("1",1));
panel.add(new Knapp("2",2));
panel.add(new Knapp("3",3));
matteKnapp = new Button("*");
matteKnapp.addActionListener( new ActionListener(){
public void actionPerformed( ActionEvent ae )
{
kalk.multiplicera();
uppdateraDisplay();
}
}
);
panel.add(matteKnapp);
matteKnapp = new Button("Tan");
matteKnapp.addActionListener( new ActionListener()
{ public void actionPerformed( ActionEvent ae )
{
kalk.tan();
uppdateraDisplay();
}
}
);
panel.add(matteKnapp);

matteKnapp = new Button("C");
matteKnapp.addActionListener( new ActionListener()
{ public void actionPerformed( ActionEvent ae )
{
kalk.rensaRegister();
uppdateraDisplay();
}
}
);
panel.add(matteKnapp);

panel.add(new Knapp("0",0));

matteKnapp = new Button("=");
matteKnapp.addActionListener( new ActionListener(){
public void actionPerformed( ActionEvent ae )
{
kalk.enter();
uppdateraDisplay();
}
}
);
panel.add(matteKnapp);

matteKnapp = new Button("/");
matteKnapp.addActionListener( new ActionListener(){
public void actionPerformed( ActionEvent ae )
{
kalk.dividera();
uppdateraDisplay();
}
}
);
panel.add(matteKnapp);

// Skapar själva räknaren
kalk = new Kalkylator();

}

private void uppdateraDisplay()
{
// Uppdaterar displayen
display.setText(" " + kalk.displayValue());
}
// Referenser

private TextField display;
private Kalkylator kalk;
}

Testa.class

public class Testa
{
static public void main ( String arg[] )
{
KalkylatorFonster kf = new KalkylatorFonster();
kf.setVisible(true);

}

}

Baan
2005-11-13, 15:23
tror det är lättare om du skickar koden istället så att man kan köra progrmamet själv och testa lite.

vad programmerar du räknaren till, en javakurs eller bara för skojs skull? reagerade på att du hade variabelnamn och tja allt annat möjligt på svenska, inte något jag fått ha i någon javakurs :) english ftw även om alla kan svenska

Stenberg
2005-11-13, 15:31
hm får invalid filetype när jag försöker bifoga filerna....

Baan
2005-11-13, 16:34
hm får invalid filetype när jag försöker bifoga filerna....

lustigt att ingen annan märkte, men du behöver ju inte bifoga filerna, det räcker med koden såklart, kan ju själv skapa dom olika filerna i valfri editor :)

vette fan vad jag tänkte på när jag skrev det där uppe, förmodligen ingenting