- dodałem zmienną
którą ustawiałem na true po dodaniu "." do wyrażenia, przed dodaniem "." należy sprawdzić czy zmienna jest false,
Siedzę i próbuję, ale mam problem. Żeby dodać kropkę muszę sprawdzić, czy 'czyKropka' jest 'false'. Jeśli jest to dodaję kropkę i zmieniam wartość na 'true'. Ale.. na początku muszę przecież zainicjalizować zmienną, więc piszę przed warunkiem 'if', że 'czyKropka' jest 'false'.. tylko teraz to jest bez sensu, bo zawsze przy naciśnięciu klawisza od kropki, będzie mi ustawiał wartość zmiennej na 'false' i tym samym zawsze będzie dodawał kropkę ilekroć go nacisnę ;/ Mógłbyś mi to jakoś rozjaśnić? Będę bardzo wdzięczny. W sumie myślałem też o sprawdzaniu ciągu tekstu (String) i gdyby np były w nim 'ilość kropek <= 1' to przycisk ową kropkę by dodawał, a gdyby 'ilość kropek > 1' to robiłby 'break'. Ale nie znam do tego metody. Próbowałem jak powyżej StringTokenizera, ale nie wychodzi. Będę wdzięczny za nakierowanie, pozdrawiam :)
EDIT##
Ok, zrobione :)
Trochę innym sposobem, ale działa jak należy :)
Po kolei:
- Nowa klasa "Kropka"
Kopiuj
package my.kalkulator;
import java.util.*;
import java.io.*;
public class Kropka extends KalkulatorUI
{
public int czyKropka(String x)
{
int y = 0;
StringTokenizer st = new StringTokenizer(x, "1234567890");
while (st.hasMoreTokens())
{
String s = st.nextToken();
if (!s.equals("."))
{
y = 1;
return y;
}
else
{
y = 2;
return y;
}
}
return y;
}
}
No i kod przycisku:
Kopiuj
private void jButton25ActionPerformed(java.awt.event.ActionEvent evt)
{
Kropka ustal = new Kropka();
String tekst2 = jTextField1.getText();
if (ustal.czyKropka(tekst2) == 1 || ustal.czyKropka(tekst2) == 0)
{
String tekst = jTextField1.getText();
jTextField1.setText(tekst + ".");
}
}
Pozdrawiam! :)
EDIT###
Ok, wszystko działa :) problem z kropką, klawiszem backspace, usuwaniem kropki po dodaniu operatora, wszystko rozwiązane :) w sprawie samego kalkulatorka pozostała jedynie mała drobnostka, mianowicie - jeżeli wpiszę następujące wyrażenie "0 - 9 + 6", to program obliczy wynik i wypluje "0 - 9 + 6 = -3.0" plus ONP "0 9 - 6 +", ale gdy pominę przy działaniu "0", czyli wpiszę "- 9 + 6", program nie podaje wyniku, ale wypluwa ONP w postaci "9 - 6 +". Problem dotyczy drugiej fazy rozwiązywania wyrażenia, bo po przełożeniu wyrażenia na ONP proszę, by wyświetlił postfiks w okienku i następnie przechodzi do obliczania pracując na ONP. W czym jest tutaj problem? Wyskakuje mi błąd, że stos jest pusty. Ale przecież "9" powinna wskoczyć tak czy siak na stos. Będę wdzięczny za rady :)
Shalom