Я нуждаюсь в формулах в java, что, в момент цифры вводят число в компьютер "n", отделил их мне в билетах 500 200 100 50 и 20 используя div и mod (я сознательный, что div "/" и mod - "%").
UtilizarГ© простой алгоритм, чтобы помогать тебе понимать проблему.
Способ это решать состоит в том, чтобы начинать делить nГєmero между билетами большего denominaciГіn и с остатком продолжать dividiГ©ndolo последовательно с теми несовершеннолетнего denominaciГіn до тех пор, пока уже он совсем не останется. Я прохожу по шагу:
DГ-Ланей, что nГєmero инициал - 2790
Вїcuantos билеты 500, мы можем использовать?
2790 div 500: 5
Вїcuanto остается, чтобы разделять?
2790 mod 500: 290
и мы продолжаем с остатком, что
290 div 200: 1
290 mod 200: 90
90 div 100: 0
90 mod 100: 90
90 div 50: 1
90 mod 50: 40
40 div 20: 2
40 mod 20: 0
Тогда конечного результата
Сейчас он пробует писать cГіdigo с этой идеей.
Я перемещаю одну тебя implementaciГіn используя алгоритм, показанный из-за @Equiso:
public class ContadorDeBilletes {
private static int[] BILLETES;
public static final int QUINIENTOS = 500;
public static final int DOSCIENTOS = 200;
public static final int CIEN = 100;
public static final int CINCUENTA = 50;
public static final int VEINTE = 20;
public static final int DIEZ = 10;
public static final int CINCO = 5;
static {
BILLETES = new int[] { QUINIENTOS, DOSCIENTOS, CIEN, CINCUENTA, VEINTE, DIEZ, CINCO };
}
public static Map<Integer, Integer> procesa(double importe) {
Map<Integer, Integer> contador = init();
if (importe <= 0) {
throw new IllegalArgumentException("Importe no valido....");
}
for (int index = 0; index < contador.size(); index++) {
double resultado = importe / BILLETES[index];
if (resultado > 0) {
contador.put(BILLETES[index], (int) resultado);
}
importe = importe - ((int) resultado * BILLETES[index]);
}
return contador;
}
private static Map<Integer, Integer> init() {
Map<Integer, Integer> contador = new HashMap<Integer, Integer>();
contador.put(QUINIENTOS, 0);
contador.put(DOSCIENTOS, 0);
contador.put(CIEN, 0);
contador.put(CINCUENTA, 0);
contador.put(VEINTE, 0);
contador.put(DIEZ, 0);
contador.put(CINCO, 0);
return contador;
}
}
Ваш тесты:
public class ContadorDeBilletesTest {
@Test
public void test() {
Map<Integer, Integer> contador = ContadorDeBilletes.procesa(5324.234);
assertThat(contador.get(ContadorDeBilletes.QUINIENTOS), is(10));
assertThat(contador.get(ContadorDeBilletes.DOSCIENTOS), is(1));
assertThat(contador.get(ContadorDeBilletes.CIEN), is(1));
assertThat(contador.get(ContadorDeBilletes.CINCUENTA), is(0));
assertThat(contador.get(ContadorDeBilletes.VEINTE), is(1));
assertThat(contador.get(ContadorDeBilletes.DIEZ), is(0));
assertThat(contador.get(ContadorDeBilletes.CINCO), is(0));
}
@Test(expected = IllegalArgumentException.class)
public void testZero() {
ContadorDeBilletes.procesa(0);
}
@Test
public void testSinResto() {
Map<Integer, Integer> contador = ContadorDeBilletes.procesa(500);
assertThat(contador.get(ContadorDeBilletes.QUINIENTOS), is(1));
assertThat(contador.get(ContadorDeBilletes.DOSCIENTOS), is(0));
assertThat(contador.get(ContadorDeBilletes.CIEN), is(0));
assertThat(contador.get(ContadorDeBilletes.CINCUENTA), is(0));
assertThat(contador.get(ContadorDeBilletes.VEINTE), is(0));
assertThat(contador.get(ContadorDeBilletes.DIEZ), is(0));
assertThat(contador.get(ContadorDeBilletes.CINCO), is(0));
}
}
if (importe <= 0) importe = importe*-1; boolean deboPasta = true;
XD
– Jordi Castilla
07.04.2016, 17:39