2015-10-17 2 views
0

Я пытаюсь сделать счетчик, так что, пока человек продолжает отвечать да во время цикла, он продолжает подсчитывать, а затем после каждого ответа говорит, сколько раз уже сказал человек да (y) в этом случае.Счетчик в Java (не GUI)

Вот код до сих пор:

/** 
* Write a description of class dummygameclass here. 
* 
* @author (your name) 
* @version (a version number or a date) 
*/ 

    import java.util.*; 
      public class dummygameclass 
    { 
    // instance variables - replace the example below with your own 
    public static void main(String [] args) throws InterruptedException{ 

    Scanner reader = new Scanner(System.in); 

    int i1, i2, i3, i4, i5, i6, i7, i8, i9; 
    String s1, s2, s3, s4, s5, s6, s7, s8, s9; 
boolean loop = true; 
      while(loop=true){ 
    System.out.println("You walk up the stairs, but you shockingly see yourself back in the same room, same position, climb again?"); 
     s3 = reader.next(); 
     if(s3.equals("y")){ 
      System.out.println("You walk up the stairs, but you shockingly see yourself back in the same room, same position, climb again?"); 
     s3 = reader.next(); 
     int counter = 0; 
     counter++; 
     System.out.println(counter); 

     }else if(s3.equals("n")){ 

      System.out.println("You have chosen not to climb the staircase."); 
      loop=false; 
      break; 

     } 


    } 
    } 
    } 

Но это не делает мне ничего хорошего, что я могу сделать? Счетчик просто или ничего не показывает или «1», но больше ничего?

+2

Вы устанавливаете счетчик = 0 при каждом запуске цикла. –

+1

Это, безусловно, домашнее задание. Поэтому я дам несколько общих советов, вместо того, чтобы делать это за вас. Не создавайте девять одинаково названных переменных каждого типа в начале каждого метода. Дайте вашим переменным значимые имена. Кроме того, попытайтесь выровнять строки вашего кода, чтобы скобки соответствовали верификации. Это упростит отладку блоков кода. – zerobandwidth

+1

@zerobandwidth, на самом деле я все еще в старшей школе. Это дополнительное учебное пособие для развлечения! – Amad27

ответ

2

Вы пытались объявить свой счетчик вне себя во время цикла. Наряду с вашим int i1 i2 и т. Д. Тип int counter; и инициализировать его до 0. Затем он должен работать.

2

Вы объявляете счетчик переменных в if и initialize равным 0 также в нем! Счетчик переменных должен быть объявлен и инициализирован до 0 до времени.

while(loop=true) 

Вы воздействуете на значение в цикле, а не на сравнение! Кроме того, бесполезно сравнивать true = true, в то время как (цикл) достаточно.

0

несколько изменений кода. Основная проблема при объявлении переменной в правильной области.

/** 
* Write a description of class dummygameclass here. 
* 
* @author (your name) 
* @version (a version number or a date) 
*/ 

import java.util.*; 
public class dummygameclass { 

    // instance variables - replace the example below with your own 
    public static void main(String [] args) throws InterruptedException{ 

    Scanner reader = new Scanner(System.in); 
    int i1, i2, i3, i4, i5, i6, i7, i8, i9; 
    String s1, s2, s3, s4, s5, s6, s7, s8, s9; 
    boolean loop = true; 

    int counter = 0; // moved to outside of the loop scope   

    while(loop=true){ 
     System.out.println("You walk up the stairs, but you shockingly see yourself back in the same room, same position, climb again?"); 
     s3 = reader.next(); 

     if(s3.equals("y")){ 
      //System.out.println("You walk up the stairs, but you shockingly see yourself back in the same room, same position, climb again?"); 
      //s3 = reader.next(); 
      //int counter = 0; 
      counter++; 
      //System.out.println(counter); 
     } 
     else if(s3.equals("n")){ 
      System.out.println("You have chosen not to climb the staircase."); 
      loop=false; 
      //break; // don't need both break and setting loop to false 
     } 
    } 

    // moved to outside of the loop scope, printed once after loop ends 
    System.out.println(counter); 

    } 

}