zamiana liczby między systemami

0

Witam, mam problem z napisaniem programu, dopiero zaczynam uczyć się Javy ale muszę na zajęcia zrobić program który zamieni liczbę z dowolnego systemu liczbowego. ma działać to tak, że wywołując program jako pierwszy argument podaję liczbę a później jej podstawę i tak na zmianę. Byłabym bardzo wdzięczna gdyby ktoś pomógł mi to ruszyć, albo wytłumaczył co mam zrobić, tylko tak bardzo po ludzku :)

public class Liczba {
private int n;
Liczba() {
}
Liczba(int n) {
}
Liczba(String n, int podstawa) throws LiczbaException {
}
public String zapis(int podstawa) throws LiczbaException {
}
}
0

Tutaj masz kod zamieniajacy liczbe dziesietna na binarna(zwraca w psotaci łancucha)

public String getBinary(String value)
    {        
        int dec=Integer.parseInt(value);
        String binary="";
 
        while(dec > 0)
        {
            int rest=dec%2;
            dec/=2;
 
            binary=rest+binary;
        }
 
        return binary;
    }

Dziala on tak:mamy liczbe na przykład 8. 8dzielimy modulo na 2 i sprawdzamy ile reszty zostało. 8mod2=0 (bo 8/2=4) i teraz 4 /2=6 i tak dalej.
W skrocie
8|0
4|0
2|0
1|1 (1 mod 2) =1

Zapisujemy w odwrotnej kolejnosci 1000->8 w binarnym.

0

To jest raczej trywialne, wykorzystaj funkcję Integer.parsetInt(String s, int podstawa), np.

Integer.parseInt(args[0],Integer.parseInt(args[1]);

Zakładam, że podstawę systemu podajemy dziesiętnie.

0

Ogolna zasada jest taka ze musisz zamienic podana liczbe na dziesietny, a potem z dziesietnego na inny. Tutaj kod:

public class Test {

   public static void main(String[] args) {
      int dec = 0;
      Scanner in = new Scanner(System.in);
      System.out.println("Podaj liczbe:");
      String num = in.nextLine();
      System.out.println("W jakim systemie jest ta liczba?");
      int system = in.nextInt();
      //Z innego na dziesietny
      for (int a=0, b=num.length()-1; a<num.length(); a++, b--) {
         String n = num.substring(a, a+1);
         Pattern pattern = Pattern.compile("\\d");
         Matcher matcher = pattern.matcher(n);
         if (!matcher.matches()) {
            dec += (((int)num.charAt(a) - 55) * Math.pow(system, b));
         } else {
            dec += (Integer.parseInt(n) * Math.pow(system, b));
         }
      }
      System.out.println("Na jaki system zamienic?");
      int toSystem = in.nextInt();
      //Z dziesietnego na inny
      StringBuilder sb = new StringBuilder();
      while (dec > 0) {
         int modulo = dec % toSystem;
         if (modulo < 10) {
            sb.append(modulo);
         } else {
            sb.append((char)(55 + modulo));
         }
         dec /= toSystem;
      }
      sb.reverse();
      System.out.println(sb.toString());
   }
}
0

@michat34, durny kod.

Podaj liczbe:
f
W jakim systemie jest ta liczba?
16
Na jaki system zamienic?
10
47
Podaj liczbe:
-7
W jakim systemie jest ta liczba?
10
Na jaki system zamienic?
2

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