Печать числа, основываясь на предоставленный пользователем номер


Есть ли лучший способ, чтобы задать для ввода и дать ответы, но не так много линий? Каждый вход даст конкретных результатов в соответствии с ключом, которые я использую, но это несколько линий кажется чрезмерным. Я новичок в Java и может использовать некоторые идеи о том, как оптимизировать этот кодирование.

    import java.util.Scanner; 
    class Test {
    public static void main (String [] args) {

    System.out.print ("Enter the day of the month - Answer: "); 
    Scanner inputFigure = new Scanner (System.in); 
    int i = inputFigure.nextInt (); 
    if ( i==1) { 
        System.out.println ("12");
    }
    else if (i==2) {
        System.out.println ("13");
    }
    else if (i==3) {
        System.out.println ("14");
    }
    else if (i==4) {
        System.out.println ("11");
    }
    else if (i==5) {
        System.out.println ("12");
    }
    else if (i==6) {
        System.out.println ("13");
    }
    else if (i==7) {
        System.out.println ("14");
    }
    else if (i==8) {
        System.out.println ("11");
    }
    else if (i==9) {
        System.out.println ("12");
    }
    else if (i==10) {
        System.out.println ("21");
    }
    else if (i==11) {
        System.out.println ("22");
    }
    else if (i==12) {
        System.out.println ("23");
    }
    else if (i==13) {
        System.out.println ("24");
    }
    else if (i==14) {
        System.out.println ("21");
    }   
    else if (i==15) {
        System.out.println ("22");
    }
    else if (i==16) {
        System.out.println ("23");
    }
    else if (i==17) {
        System.out.println ("24");
    }
    else if (i==18) {
        System.out.println ("21");
    }
    else if (i==19) {
        System.out.println ("22");
    }
    else if (i==20) {
        System.out.println ("31");
    }
    else if (i==21) {
        System.out.println ("32");
    }
    else if (i==22) {
        System.out.println ("33");
    }
    else if (i==23) {
        System.out.println ("34");
    }
    else if (i==24) {
        System.out.println ("31");
    }
    else if (i==25) {
        System.out.println ("32");
    }
    else if (i==26) {
        System.out.println ("33");
    }
    else if (i==27) {
        System.out.println ("34");
    }   
    else if (i==28) {
        System.out.println ("31");
    }
    else if (i==29) {
        System.out.println ("32");
    }
    else if (i==30) {
        System.out.println ("41");
    }
    else if (i==31) {
        System.out.println ("42");
    }
    else {
        System.out.println ("Invalid entry for the day. Try again.");
    }
}
}


101
1
задан 26 февраля 2018 в 07:02 Источник Поделиться
Комментарии
2 ответа

Лучший способ сократить код можно было бы записать формулу для ее. Эту формулу должны быть упакованы в функцию:

public static String outputForDay(int day) {
if (!(1 <= day && day <= 31)) {
throw new IllegalArgumentException("Invalid entry for the day.");
}
int onesDigit = day % 10,
tensDigit = day / 10;
return Integer.toString(10 * (tensDigit + 1) + (onesDigit % 4) + 1);
}

Затем вызвать функцию такой:

public static void main(String[] args) {
try (Scanner scanner = new Scanner(System.in)) {
System.out.print("Enter the day of the month: ");
System.out.println(outputForDay(scanner.nextInt()));
} catch (IllegalArgumentException e) {
System.out.println(e.getMessage());
}
}

3
ответ дан 26 февраля 2018 в 08:02 Источник Поделиться

Вы можете использовать то, что называется картой.
Поэтому в основном вы будете создавать свою карту с

Map<KEY, VALUE> map = new HashMap<KEY, VAlUE>();

Вашем случае будет что-то вроде этого:

map<Integer, String> map = new HashMap<Integer, String>();

Затем поставить значения вот так:

map.put("World/Value", "What is would equal");

в вашем случае, было бы

map.put(1, "12").put(2,"13").build();

Делать то, что вы пытаетесь сделать, вы можете создать для петли и

System.out.println(map.get(VALUE));

Например,

System.out.println(map.get(1));

и это возвращение "12"

0
ответ дан 26 февраля 2018 в 08:02 Источник Поделиться