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
Lägg ut koden då så vi kan skratta lite :D
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.
Stenberg, ut med en fråga och en bit kod så ska vi se!
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);
}
}
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....
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
vBulletin® v3.8.8, Copyright ©2000-2024, Jelsoft Enterprises Ltd.