[JAVA]: Число от десетична в шестнайсетична бройна система. Моля малко за подсказка!


1

Здравейте! Първо искам да благодаря всички Българи които ми помагаха и отговаряха на въпросите които задавах! Ако не бяхте вие просто щях да се отчаям! Моля помогнете ми съвсем мъничко да довърша следният код на Java: 

14. Напишете програма, която преобразува дадено число от десетична в
шестнайсетична бройна система.
 
(Моля да не обръщате внимание на названието на класа ми! 14 тата задача от 6 та глава я нарякох shestPetnadeset а 15 тата задача от шеста глава я нарякох
shestChetrinadeset. Тоест обърках названията на класовете но това няма значение!
 
http://pastebin.com/4pzrmLpe
 

Моля подскажете какво да напиша след System.out.print(otEdnoDoPetnadeset за да ми се появява вместо цифри буквите във селектора? Ако напиша просто 

System.out.print(ar [i]); тогава ми пише числата просто! Как да направя така, че всяко число да попада във селектора switch за да се появяват буквите вместо цифри ако цифрата е повече от 9. Благодаря ви!


в Други от Alexandr (0 точки)


Отговори



1

// пишa на C# но ще успееш и сам да си го преведеш. (:

Първо - разкарай тоя суич.
Вместо това напиши следното:

char[] hexChars = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'];

После правиш метода:

public string DecToHex(int dec) {

  int leftAfterDevision  = dec;
 string result = "";

  while (leftAfterDevision >0){
    result += hexChars[leftAfterDevision % 16];
    leftAfterDevision = leftAfterDevision/16;
 }
return result;
}

Вероятно имам грешки в този код, защото го пиша в самия коментар, без да тествам, но смятам че и сам можеш да ги изчистиш.

Успех


Добавка:
Ако решиш че искаш метода да работи и за отрицателни числа, тогава добави следното преди резултата:
 
if (dec < 0) {
result = "-" + result}
 

После иди при реда int leftAfterDevision  = dec; и го преправи така че да взима абсолютната стойност на dec.

 


Ако пък искаш да работи и с 0, тогава има 2 начина:

1 - в началото правиш проверка дали е подадена нула - ако да - връщаш я като стринг.

2 - обръщаш while цикъла в do-while цикъл. (този метод ми харесва повече)


от lokiko91 (790 точки)


0
Съжалявам но от С не разбирам нищо! Моля напишете ми го във Java! Трябва ми просто да ми кажете какво да допиша във онзи ред във моя код а не друг код!

от Alexandr (0 точки)

0
Значи... същинската част си е същата независимо от езика. Аз може и да не знам синтаксиса на java но знам че нещата са почти същите. Просто прочети написаното - особено while цикъла и ще разбереш каква е цаката.

от lokiko91 (790 точки)



0
Здравей, от скоро чета на Наков книгата и задачата за конвертиране от десетична към шестнайсетична  малко сложно ми се стори, че се получи но все пак да изпращам това което натворих:
import java.util.Arrays;
import java.util.Scanner;

public class Zad12 {

    public static void main(String[] args) {
        // Въвеждаме от клавиатурата число в десетична
        Scanner scan = new Scanner(System.in);
        System.out.println("Enter the number on 10numeric system");
        int number = scan.nextInt();
        // слагаме брояч, който да преброи колко пъти се завърта цикъла и
        // съответно колко да е дълъг масива в който запазвам
        int count = 0;
        for (int i = number; i > 0; i /= 2) {
            count++;
        }
        int[] array = new int[count];
        //Записване на 1 или 0 от зад на пред, според това дали има или няма остатък.
        int x = (array.length) - 1;
        for (int i = number; i > 0; i /= 2) {
            if (i % 2 != 0) {
                array[x] = 1;
                x--;
            } else {
                array[x] = 0;
                x--;
            }

        }
        //Отпечатване на масива от 1 и 0
        System.out.println(java.util.Arrays.toString(array));
        for (int b : array) {
            System.out.print(b);
        }
    }
}

от krach (0 точки)