2013-08-24 3 views
0

У меня было a question earlier по программе, которую я писал, чтобы имитировать рост растений. Он по существу использует цикл, который учитывает заданный предел.Java - проверка грамматики не работает должным образом

С тех пор я изменил код на следующее:

/* 

Java program: plant.java 

This program runs a loop simulating plant growth. 
The idea is that the plant will continue to have "repeated" 
growth and that it will stop (or slow down to a crawl) at some point, 
in this case at 100 branches. 

*/ 

public class plant1 
{ 
    public static void main (String [] poop) 
    { 
     int current_growth = 0, limit = 100; //plant growth starts at ZERO and is limited to 100 
     String word = "branches"; 

     for(current_growth = 0; current_growth <= limit; ++current_growth) 
     { 
      //here, we are checking to see if the plant has grown just 1 inch. 
      //this is important just for grammatical purposes 
      if (current_growth == 1) 
      { 
       word = "branch"; //this changes the "word" to branch instead of branches 
      } 

      if (current_growth < 100) 
      { 
      System.out.println("Your plant has grown " + current_growth + " " + word); 
      } 
      else 
      { 
      System.out.println("Your plant will no longer grow."); 
      } // end else 
     } //end while loop 
    } //end main method 
} //end class 

Единственная проблема заключается в следующем:

Я добавил грамматическую проверку, чтобы проверить наличие единственного и множественного числа по отношению к количеству branches печатается.

Однако, когда я запускаю код проверка не работает так, у меня есть предложения, как Your plant has grown 97 branch, когда он должен сказать Your plant has grown 97 branches

+0

Шаг через него. Вы настраиваете его на «ветку» на 1, но вы не вернетесь к «веткам», когда вы> 1. Используете ли вы среду IDE? Очень полезно узнать, как выполнить свой код (отладка). – keyser

+0

Почему бы не начать с 'word = branch', а затем как' current_growth> 1', установите его в 'branch'. Было бы намного чище. –

ответ

0

Вам нужно сбросить переменные слова обратно «слова» если current_growth больше 1.

0

Ну, если вы хотите «быстрый и грязный» решение просто добавить еще заявление:

if (current_growth == 1) 
{ 
    word = "branch"; //this changes the "word" to branch instead of branches 
} 
else { 
    word = "branches"; 
} 
1

проблема с программой является то, что переменная word находится в го e основного метода, а не цикла for. Это означает, что если вы измените переменную внутри цикла for на одной итерации, она сохранит это значение над оставшимися итерациями. Ваша проблема может быть легко решена простым перемещением переменной в петлю для-которая заставляет его быть инициализирован со значением "branches" на каждой итерации цикла:

/* 

Java program: plant.java 

This program runs a loop simulating plant growth. 
The idea is that the plant will continue to have "repeated" 
growth and that it will stop (or slow down to a crawl) at some point, 
in this case at 100 branches. 

*/ 

public class plant1 
{ 
    public static void main (String [] poop) 
    { 
     int current_growth = 0, limit = 100; //plant growth starts at ZERO and is limited to 100 

     for(current_growth = 0; current_growth <= limit; ++current_growth) 
     { 
      String word = "branches"; 
      //here, we are checking to see if the plant has grown just 1 inch. 
      //this is important just for grammatical purposes 
      if (current_growth == 1) 
      { 
       word = "branch"; //this changes the "word" to branch instead of branches 
      } 

      if (current_growth < 100) 
      { 
       System.out.println("Your plant has grown " + current_growth + " " + word); 
      } 
      else 
      { 
       System.out.println("Your plant will no longer grow."); 
      } // end else 
     } //end while loop 
    } //end main method 
} //end class 
+0

Я вижу. Я в конечном итоге исправил решение по-разному, более небрежно. Ваше решение намного проще и, по-видимому, соответствует лучшей практике кодирования: – Berzerkeley

Смежные вопросы