Convert Arabskie na Rzymskie i na odwrót.

0

Cześć zrobiłem sobie właśnie taki problem i wychodzi na to, że problem mam z wypisem

public static void main(String args[])
        {
        int arab;
		 System.out.println(tooArabic(args[0]));
         try
             {
            arab=Integer.parseInt(args[0]);
			System.out.println(tooRoman(arab));
            }
        catch(RomArab e)
            {
                System.out.println(e.getMessage());    
            }
			
        }
    }

Błąd polega na tym,że jak wpisze np 4 to wypisze mi IV ale jak wpisze np 4 C to wypisze mi VI i 0 a jak dam samo C to wypisze 100 ale z bledami typu:

Java.Lang.NumberFormatException

i ciagle sie czepia linijki

arab=Integer.parseInt(args[0]);

bardzo proszę o pomoc.

0

Powinieneś sprawdzać, czy zostały przekazane argumenty.

public static void main(String args[])
{
     int arab;
     if(args.length == 0)
     {
          System.out.println("Uzycie programu: java ....");
          System.exit(0);
     } 
     System.out.println(tooArabic(args[0])); //nie znam kodu metody tooArabic, być może tu też musi być obsługa błędów
     try
     {
          arab=Integer.parseInt(args[0]); //żeby tu nie było błędu, to args[0] musi mieć postać liczby typu int, nie rozumiem zatem co ma robić tooArabic(args[0])
          System.out.println(tooRoman(arab));
     }
     catch(NumberFormatException e
     {
          System.out.println(e);
     }
     catch(RomArab e)
     {
           System.out.println(e.getMessage());    
     }
}

P.S.

  • wielkość wcięcia losujesz rzucając kością?
  • nie lepiej nazwać metody konwertujące toArabic i toRoman?
0

Napisz może, jak sobie wyobrażasz działanie programu.
Jedna możliwość:
Użytkownik wpisuje java NazwaKlasy arg i program rozpoznaje czym jest arg. W zależności od rezultatu rozpoznania konwertuje arg na liczbę arabska, konwertuje na liczbę rzymską lub wyświetla komunikat o niewłaściwej postaci parametru.
Druga możliwość:
Użytkownik wpisuje java NazwaKlasy arg1 arg2, arg1 jest informacją co program ma zrobić z arg2.

0

Tzna ja sobie to wyobrazalem tak,ze woisuje np java arabskie 3 CM C 19 29 i że to mi zamienia...

Czyli chyba ta pierwsza opcja hehe :)

0

Może jakoś tak:

public static void main(String args[])
{
     for(int i=0;i<args.length;i++)
     try
     {
          int n = Integer.parseInt(args[i]); //jeśli parsowanie się powiedzie, to należy konwertować Arabic => Roman
          if(n>=0 && n<=4000)
          {
              System.out.println(args[i]+" = "+naRzymska(args[i]));
          }
     }
     catch(NumberFormatException e)
     {
          try
          {
               String arabska = naArabska(args[i]);
               System.out.println(args[i]+" = "+arabska);
          }
          catch(Exception e)
          {
          }
     }
}

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