2015-03-26 2 views
0

Привет, ребята, мой контрольный метод, но я не могу справиться с логикой. Название работает нормально, но Age \ Weight \ Height работают неправильно (когда я ожидаю, что это правда, это ложь).Логика в Java android

Я пробовал несколько раз с более(), но все же я не могу это исправить. Пожалуйста, помогите мне с этой логикой или если у вас есть лучшая идея с проверкой и показом сообщения о неправильных значениях в текстовых просмотров. Atm Im пытается с создателем предупреждений.

Когда я положил в: _Age 24, оператор if добавляет 10 (я хотел добавить 10, когда его ниже 9 и более 70 или пустой) То же самое происходит с остальными переменными, и я не могу найти свою логическую ошибку.

private String checkValue(){ 
    String x = ""; 
    int a = 0; // TRUE == 1 false == 0 NAME > AGE > HEIGHT > WEIGHT 
    String name = textName.getText().toString(); 
    String _Age = textAge.getText().toString(); 
    String _Weight = textWeight.getText().toString(); 
    String _Height = textHeight.getText().toString(); 



    if (TextUtils.isEmpty(name))                     a+=1; 
    if (TextUtils.isEmpty(_Age) || ((Integer.parseInt(_Age) > 9) && (Integer.parseInt(_Age) < 70)))     a+=10; 
    if (TextUtils.isEmpty(_Height) || ((Integer.parseInt(_Height) > 100) &&(Integer.parseInt(_Height) < 250)))  a+=100; 
    if (TextUtils.isEmpty(_Weight) || ((Double.parseDouble(_Weight) > 30) && (Double.parseDouble(_Weight) < 300))) a+=1000; 
    if (a==0) x="All right boss here's the answer for your awsome body"; 
    while (a>=1) { 
     x += "Please fill the data: otherwise - I cannot help you out mate"; 
     if (a >= 1000){ 
      x += ("\n- Weight a= "+a+" parse int _Weight: " + Integer.parseInt(_Weight)); 
      a-=1000; 
     } 
     if (a >= 100){ 
      x += ("\n- Height a= "+a+" parse int _Height: " + Integer.parseInt(_Height)); 
      a-=100; 
     } 
     if (a >= 10){ 
      x += ("\n- Age a= "+a+" parse int _Age: " + Integer.parseInt(_Age)); 
      a-=10; 
     } 
     if (a >= 1) { 
      x += "\n- Name"; 
      a -=1; 
     } 
    } 
+0

Можете ли вы сделать конкретный вопрос немного более ясно, и, возможно, формат немного больше? У вас есть переменные, висящие там, которые выглядят так, будто они вот-вот упадут с обрыва. – codeMagic

ответ

0

Простая логика:

String errorString = ""; 
boolean validate = true; 
if(!ageString.isEmpty() && !heightString.isEmpty() && !weightString.isEmpty()) { 
    if(age < 9 || age > 70) { 
     errorMessage += "Invalid age!"; 
     validate = false; 
    } 
    if(height < 100 || age > 250) { 
     errorMessage += "Invalid height!"; 
     validate = false; 
    } 
    if(weight < 30 || weight > 300) { 
     errorMessage += "Invalid weight!"; 
     validate = false; 
    } 
} 
else { 
    errorString = "No empty fields allowed!"; 
    validate = false; 
} 
if(validate) { 
    //Do whatever you want 
} 
else return errorString; 
+0

, но этот никогда не проверяет, пусты ли текстовые поля (я мог бы немного смутить и не прочитать его правильно). Всякий раз, когда они пусты, моя программа вылетает из строя. – BaKu

+0

Вы можете улучшить свой ответ, объяснив, что изменилось и почему вы его изменили. – MarsAtomic

+0

Это только логика в формате читаемого кода. Этот код не работает. Вы должны преобразовывать 'TextView' в' String' в 'Integer' и регистрироваться между ними, если' строки не пусты '. – Ryan