Java оператор “if” [закрыт]

137
01 апреля 2019, 00:10

Написал данный код и он как-то некорректно работает.

if (years == 0 ){
        age = ""; }
    if (years == 1 ){
        age = "год"; }
    if (years <=4){
        age = "года"; }
    if (years <=20){
        age = "лет"; }
    if (years ==21){
        age = "год"; }
    if (years <=24){
        age = "года"; }
    if (years <=30){
        age = "лет"; }
    if (years ==31){
        age = "год"; }
    if (years <=34){
        age = "года"; }
    if (years <=40){
        age = "лет"; }
    if (years ==41){
        age = "год"; }
    if (years <=44){
        age = "года"; }
    if (years <=50){
        age = "лет"; }

При любом возрасте пишет "лет"

Answer 1

Что-то странное начинается в 51 год. Придется добавить в функцию еще кода (.

function ageToText(years) { 
  if (years == 0) { 
    age = ""; 
  } else if (years == 1) { 
    age = "год"; 
  } else if (years <= 4) { 
    age = "года"; 
  } else if (years <= 20) { 
    age = "лет"; 
  } else if (years == 21) { 
    age = "год"; 
  } else if (years <= 24) { 
    age = "года"; 
  } else if (years <= 30) { 
    age = "лет"; 
  } else if (years == 31) { 
    age = "год"; 
  } else if (years <= 34) { 
    age = "года"; 
  } else if (years <= 40) { 
    age = "лет"; 
  } else if (years == 41) { 
    age = "год"; 
  } else if (years <= 44) { 
    age = "года"; 
  } else if (years <= 50) { 
    age = "лет"; 
  } 
  return years + " " + age; 
} 
 
for (var i = 0; i < 110; i++) { 
  $("#ages").append(ageToText(i) + "<br/>"); 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<div id="ages"></div>

А вот как надо:

function ageToText(years) { 
  if (years == 0) 
    return ""; 
     
  var age = "лет";   
  var last1 = years % 10; 
  var last2 = years % 100; 
   
  if (last2 >= 5 && last2 <= 20) { 
    //age = "лет"; 
  } else if (last1 == 1) { 
    age = "год"; 
  } else if (last1 >= 2 && last1 <= 4) { 
    age = "года"; 
  } 
 
  return years + " " + age; 
} 
 
for (var i = 0; i < 130; i++) { 
  $("#ages").append(ageToText(i) + "<br/>"); 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<div id="ages"></div>

Answer 2

Моё виденье данного кода :

int lastNumberOfYear = years;
lastNumberOfYear %= 10;
if (lastNumberOfYear == 0 || lastNumberOfYear == 5 || lastNumberOfYear == 6 || lastNumberOfYear == 7 || lastNumberOfYear == 8 || lastNumberOfYear == 9) {
    age = "лет";
}
if (lastNumberOfYear == 1) {
    age = "год";
}
if (lastNumberOfYear == 2 || lastNumberOfYear == 3 || lastNumberOfYear == 4) {
    age = "года";
}
System.out.println(age + " " + years);
Answer 3

Для меня ваши коды просто ломают голову, я сделал самым примитивным способом, но к сожалению это не цикл, а просто возраст от 0 до 100. И я понял что оптимизация это не мой конёк :-)

String error = "Ошибка возраста";

    if (years <=100){
        age = "лет"; }
    if (years <=94){
        age = "года"; }
    if (years <=91){
        age = "год"; }
    if (years <=90){
        age = "лет"; }
    if (years <=84){
        age = "года"; }
    if (years ==81){
        age = "год"; }
    if (years <=80){
        age = "лет"; }
    if (years <=74){
        age = "года"; }
    if (years ==71){
        age = "год"; }
    if (years <=70){
        age = "лет"; }
    if (years <=64){
        age = "года"; }
    if (years ==61){
        age = "год"; }
    if (years <=60){
        age = "лет"; }
    if (years <=54){
        age = "года"; }
    if (years ==51){
        age = "год"; }
    if (years <=60){
        age = "лет"; }
    if (years <=54){
        age = "года"; }
    if (years <=50){
        age = "лет"; }
    if (years <=44){
        age = "года"; }
    if (years ==41){
        age = "год"; }
    if (years <=40){
        age = "лет"; }
    if (years <=34){
        age = "года"; }
    if (years ==31){
        age = "год"; }
    if (years <=30){
        age = "лет"; }
    if (years <=24){
        age = "года"; }
    if (years ==21){
        age = "год"; }
    if (years <=20){
        age = "лет"; }
    if (years <=4){
        age = "года"; }
    if (years == 1 ){
        age = "год"; }
    if (years == 0 ){
        age = error; }
READ ALSO
Сравнить поля обьектов

Сравнить поля обьектов

Задача - приходит два обьекта "старый" и "новый" вариантНеобходимо сравнить их поля и если они одинаковы - засетить в поле null, если разные - засетить...

168
java.sql.SQLException: The server time zone. MySQL 8

java.sql.SQLException: The server time zone. MySQL 8

Использую MySQL 8 на ОС Windows 10версия коннектора 8

148
Ищу аналог пробела в юникоде

Ищу аналог пробела в юникоде

Вы знали что можно использовать кириллицу при названии переменных в java?

189