2015-09-01 4 views
0

Я пытаюсь преобразовать отдельные целые числа из их значений ASCII в 0 и 1. Соответствующий код выглядит примерно так:Объединение операторов if-then

int num1 = bin.charAt(0); 
    int num2 = bin.charAt(1); 
    int num3 = bin.charAt(2); 
    int num4 = bin.charAt(3); 

    if (num1 == 49) 
    { 
     num1 = 1; 
    } 
    else 
    { 
     num1 = 0; 
    } 

    if (num2 == 49) 
    {num2 = 1;} 
    else 
    { 
     num2 = 0; 
    } 

Есть ли способ объединить, если/иначе, так что у меня нет 30 строк кода одного и того же принципа?

Я попытался if (num1 == 49 || num2 ==49) , но я не уверен, как только присвоить значение, равное 49 до 0.

+0

Посмотрите в логические операторы '&&' и '' ||. – Mena

+0

Также посмотрите на тернарный оператор, например. 'num1 = (num1 == 49)? 1: 0'. –

+1

Если вы выполняете одно и то же действие много раз, вы, вероятно, захотите создать для него метод. – Keppil

ответ

1

Вы можете преобразовать bin массива в другой массив numint с.

int[] num = new int[bin.length]; 
for (int i = 0; i < bin.length; i++) { 
    char c = bin[i]; 
    num[i] = Character.digit(c, 10); 
} 

Это будет отображать любую char цифру в int цифры. Если вы строго хотите конвертировать только char «1» к int 1 и любому другому char к int 0, вы можете реализовать его как

num[i] = (c == 49) ? 1 : 0; 
+2

'Character.digit (c, 10)' более значим, чем 'c - 48'. –

+0

@ AndyTurner - вы правы, спасибо! Я исправил решение. –

0

Было бы намного проще просто использовать некоторые функции, которые уже существуют:

String string = Integer.decode(bin).toBinaryString(); 
+2

'Integer.decode (bin)' может быть проще, чем 'new Integer (Integer.parseInt (bin))'. –