porównywanie znaków

0

Witam. Od niedawna zajmuje się Javą i mam pewien problem. Napisałem programik w NetBeansie, w którym po wpisaniu jakiś liczby w TextFieldzie o naziwe "Okno" po naciśnięciu Buttona "Wynik" pojawią sie nowe okienko z liczbą znaków użytych w zapisie tej liczby. Chciałbym zmodyfikować ten program tak, aby podawał liczbę cyfr użytych w zapisie - uwzględniając także to, że jeśli np jedna cyfra została użyta 2 razy (np 1134) to program wyświetli wartość 3 - bo użyto cyfry: 1, 3 oraz 4.

Oto fragment mojego kodu, który obsługuje akcje buttona:

private void WynikActionPerformed(java.awt.event.ActionEvent evt) {

int ilosc;
boolean error = false;
String s = this.Okno.getText();

try{
    ilosc = Integer.parseInt(s);
}
catch (Exception e)
{
    error = true;
}

if (error == false){
    
    JOptionPane.showMessageDialog(null, Integer.toString(s.length()));
    
}
else{
    Okno.setText("");
}

}

z góry dziękuję za pomoc

0
...
final static String[] NUMBERS = {
	"0","1","2","3","4","5","6","7","8","9"
};
...
public int countDigits(String number) throws NumberFormatException {
	Double.parseDouble(number);
	int count = 0;
	for(int i=0; i<NUMBERS.length; i++) {
		count+= ( number.contains(NUMBERS[i]) ) ? 1: 0;
	}
	return count;
}
0

Albo tak, wejściowy String może zawierać dowolne znaki, liczone są tylko cyfry.

        char[] znaki=Okno.getText().toCharArray();
        int[] ilosci={0,0,0,0,0,0,0,0,0,0};
        for(int i=0;i<znaki.length;i++)
        {
            char c=znaki[i];
            if(c>='0' && c<='9')
            {
                ilosci[c-'0']++;
            }
        }
0

Albo tak:

public int countDigits(String number) throws NumberFormatException {
	Double.parseDouble(number);
	HashSet set = new HashSet();

	char[] ch = number.toCharArray();
	for(int i=0; i<ch.length; i++)
		set.add(ch[i]);

	return set.size();
}
0

Dzięki za szybką odpowiedź. Sprawdziłem każdą możliwość i rzeczywiście zadziałało. Dziękuje za pomoc :)

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