Witam wszystkich, mój pierwszy post na Forum, no i od razu prośba.
Na zajęcia robimy aplikacje zamianiajaca liczby rzymskie na arabskie i na odwrót, niby proste, w C++ napisałem, Jave w konsoli tez ogarniam, mam teraz problem z aplikacją okienkową w Javie.
Ogólnie nie zmienia liczb rzymskich na arabskie (zmiania CD, ale C już nie).
Nie mogę znaleźć błędu jakoś. Oto kod:
Okno.java
private void NaArabska(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
String rzymska=jTextField2.getText().trim();
Arabskie lRzymska = new Arabskie(rzymska);
jLabel4.setText("Wynik = "+lRzymska.naArabskie(rzymska));
}
Arabskie.java
public class Arabskie {
int i, x=1,z;
private char[] a;
private final String y;
Arabskie(String y){
this.y = y; // duża szansa, że tutaj coś zepsułem :D
}
double naArabskie(String rzymska){
int ar = 0;
String strOrig = rzymska;
char[] rz;
rz = strOrig.toCharArray();
int k = rz.length;
for(int f=0; f < k; f++){
switch(rz[f]){
case 'I': {
if(rz[f+1]=='V') {ar+=4; f++;}
else if(rz[f+1]=='X'){ar+=9;f++;}
else ar++;
break;
}
case 'V': {
ar+=5;
break;
}
case 'X': {
if(rz[f+1]!='C' && rz[f+1]!='L') ar+=10;
else if(rz[f+1]=='C'){ ar+=90; f++;}
else if(rz[f+1]=='L') {ar+=40; f++;}
break;
}
case 'L': {
ar+=50;
break;
}
case 'C': {
if(rz[f+1]=='D'){ ar+=400;f++; }
else if(rz[f+1]=='M'){ ar+=900; f++; }
else ar = ar+100; f++;
break;
}
case 'D': {
ar+=500;
break;
}
case 'M': {
ar+=1000;
break;
}
}
}
return ar;
}
}