forked from harambeisnotdead/java-carande
-
Notifications
You must be signed in to change notification settings - Fork 0
/
bases.java
65 lines (51 loc) · 1.67 KB
/
bases.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
import java.util.Scanner;
public class bases {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String resultado="", resultadoR="", charResto = "";
int num=0, base=1, resto;
boolean entero;
do {
System.out.print("Introduce un numero [2-400]: ");
entero = scanner.hasNextInt();
if (entero) num = scanner.nextInt(); //introducir numero
scanner.nextLine(); //limpiar scanner
} while (!(num>1&&num<401)||!entero); //loopear mientras num no vale 2-400
do {
System.out.print("Introduce la base [2-16]: ");
entero = scanner.hasNextInt();
if (entero) base = scanner.nextInt(); //introducir base
scanner.nextLine(); //limpiar scanner
} while (!(base>1&&base<17)||!entero); //loopear mientras base no vale 2-16
while (num>0) {
resto = num%base;
if (resto>9) { //si el resto es mayor a 9 asignamos letras
switch (resto) {
case 10: charResto="A"; break;
case 11: charResto="B"; break;
case 12: charResto="C"; break;
case 13: charResto="D"; break;
case 14: charResto="E"; break;
case 15: charResto="F"; break;
}
resultado = charResto+resultado; //guardar resto en forma de caracter
}else{
resultado = resto+resultado; //guardar resto
}
num = num/base; //guardar resultado division en num
}
/*for (int i=resultado.length()-1;i>=0;i--) { //resultado al reves
resultadoR+=resultado.charAt(i);
}*/
System.out.println("Resultado: "+resultado);
/*
ejemplo 16 a base 2:
16/2 = 8 ; resto 0
8/2 = 4 ; resto 0
4/2 = 2 ; resto 0
2/2 = 1 ; resto 0
1/2 = 0 ; resto 1
respuesta 16 a base 2 = 10000
*/
}
}