Proszę o pomoc przy działaniu liczb z przecinkiem.

0

Witam, nie mogę sobie dać rady, aby kalkulator pracował i wczytywał przecinek.
Proszę o pomoc w rozwiązaniu tego problemu. W załączniku przesyłam projekt

0

Wtf?

Double.parseDouble(((JButton) evt.getSource()).getLabel());

Chcesz zamienić kropkę na liczbę?

0

Chcę aby kalkulator liczył również liczby z przecinkami np 2.5 + 5.5
Póki co liczy tylko np. 5+5 czyli tylko całkowite liczby

0

Ja wiem co chcesz, ale w przytoczonym wierszu próbujesz zamienić "." na liczbę typu double. A to jest bez sensu.

0

Podpowiesz jak to zmienić?

0

Ktoś pomoże?

4

Kładziesz ręce na klawiaturze, lecisz strzałkami do wiersza, który chcesz zmienić, przytrzymujesz backspace, aż do wybranego miejsca i zmieniasz przy pomocy reszty klawiatury (pomiń backspace!) - proste.

0

Hahaha... Beznadziejne forum. Widze że nie mam co liczyć na pomoc, bo forumowicze to zwykli cwaniacy.
Jak nie chcesz pomóc to przynajmniej nie cwaniakuj!!!

2
lalala napisał(a):

Hahaha... Beznadziejne forum. Widze że nie mam co liczyć na pomoc, bo forumowicze to zwykli cwaniacy.
Jak nie chcesz pomóc to przynajmniej nie cwaniakuj!!!

Wchodzisz na forum, ktoś ci nie rozwiązał zadania i do razu piszesz, że ja (między innymi) jestem zwykłym cwaniakiem. Mam nadzieję, że się bardzo mocno obraziłeś na to forum i już tu więcej nie wrócisz.
Tu miała być porada jak można zmienić program, żeby zaczął działać z przecinkiem, ale szkoda mi pisać jak obrażalski ma tego i tak nie zobaczyć.

0

Chodziło mi tylko o wypowiedź kolegi Szinek wyżej, który kazał mi użyć tylko backspaca i problem będzie rozwiązany.
Nie jestem obrażalska, jednak liczyłam na jakieś sugestie, bo już kombinowałam na różne sposoby i nie mogę do tego dojść. Nie jestem ekspertem Javy dlatego myślałam, że ktoś kompetentny mi pomoże jednak niestety poza kpinami nie dowiedziałam się nic czego nie wiedziałam. A ciebie chodnik to nie dotyczyło. Wybacz, że zabrzmiała moja wypowiedź jako do wszystkich.

1

Można spróbować zrobić tak: w metodzie obsługującej zdarzenie z button a sprawdzasz jaki znak się pojawia, czyli tak jak teraz, i w zależności od tego co to jest robisz jedną z akcj:
-jeżeli jest to cyfra, to dopisujesz to do łańcucha do obiektu typu StringBuilder, który będzie polem klasy, przy czym jeżeli jest on null (dla pierwszego znaku), to go najpierw tworzysz,
-jeżeli jest to przecinek, to zamieniasz na kropkę i też dopisujesz,
-jeżeli jest to znak jednego z działań, to robisz pareseDouble na Stringu odczytanym z tego StringBuilder i zapisujesz tą zmienną, a StringBuilder ustawiasz na null i oczywiście zapamiętujesz znak,
-jeżeli jest to klawisz backspace, to wycofujesz ostatni znak z łańcucha, ale trzeba też sprawdzać, czy ostatnie nie było działanie.
Zasadniczy problem teraz to kolejność wykonywania działań, trzeba rozważyć, czy:

  • zrobisz to tak jak się pojawiają i masz tylko dwie zmienne double i jedną operację,
  • zrobisz zapis do drzewa i wykorzystanie ONP do obliczenia wyniku (obsługa nawiasów i inne rzeczy - o wiele trudniejsze).
    W trakcie trzeba rozważyć jakieś dodatkowe warunki, np. więcej niż jeden przecinek, ale ogólnie to tyle. Zasadnicza różnica z twoim podejściem jest taka, że nie parsujesz każdego znaku, tylko cały łańcuch w momencie, kiedy na wejściu jest znak działania.
0

Ok dzięki za wytłumaczenie, mam jeszcze problem aby aplet działał mi na stronie. Tworzę plik index.html a w nim:

<HTML>

<TITLE>A Kalkulator</TITLE>

<BODY>

Oto kalkulator

<APPLET CODE="kalk1.class" WIDTH=180 HEIGHT=180>

</APPLET>

</BODY>

</HTML>

Jednak nie uruchamia mi go, tylko pokazują się błedy....
Jakieś podpowiedzi co robie nie tak, albo jak to zrobić?

0

Niezbyt ładne, ale poprawne. Napisz jakie błędy się pojawiają.
Do Twojego apletu używałem uniwersalnego testera:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
   <meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
   <title>Tester apletów</title>
</head>
<applet width="180" height="160" code="kalk1">
</applet>
<body>
</html>

I aplet działał.

0

Błędy:

 Java Plug-in 1.6.0_31
Using JRE version 1.6.0_31-b05 Java HotSpot(TM) Client VM
User home directory = C:\Users
----------------------------------------------------
c:   clear console window
f:   finalize objects on finalization queue
g:   garbage collect
h:   display this help message
l:   dump classloader list
m:   print memory usage
o:   trigger logging
q:   hide console
r:   reload policy configuration
s:   dump system and deployment properties
t:   dump thread list
v:   dump thread stack
x:   clear classloader cache
0-5: set trace level to <n>
----------------------------------------------------


java.lang.UnsupportedClassVersionError: Main : Unsupported major.minor version 51.0
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClassCond(Unknown Source)
	at java.lang.ClassLoader.defineClass(Unknown Source)
	at java.security.SecureClassLoader.defineClass(Unknown Source)
	at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
	at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Unknown Source)
	at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
	at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
	at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source)
	at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Exception: java.lang.UnsupportedClassVersionError: Main : Unsupported major.minor version 51.0

index.html wkleiłam do folderu bin tam gdzie mam Main. class
W programie działa jednak w przeglądarce nie chce się wyświetlić.

0

Masz różne wersje Javy (np. domyślny kompilator 1.7, JRE 1.6).
W IDE możesz zmienić wersje kompilatora. Jeżeli kompilujesz "z ręki", to też możesz zmienić: javac -source 1.6 -target 1.6 kalk1.java .

0

Czy mogę to zrobić za pomocą Eclipse? Jakiego programu używasz?

0

Możesz: zaznacz projekt => PPM => Properties => Java Compiler => zaznacz Enable Project specifing settings => wybierz wersję

0

Bardzo dziękuję bogdans, teraz działa tak jak należy.
Pozdrawiam.

1 użytkowników online, w tym zalogowanych: 0, gości: 1