2014-09-22 58 views
0

我正在開發一個簡單的Hanio java程序塔。 我給它提供了用戶輸入的磁盤數量的所有步驟。在java中添加計數器

但現在我堅持我想提出一個計數器在年底給用戶的步驟清晰的編號,而不是讓他們指望他們所有

這裏是我的代碼,如果你能幫助我,

添加一個很棒的計數。

任何幫助將是巨大的

import java.util.Scanner; 

public class Hanoi{ 

    public static void Han(int m, char a, char b, char c){ 
     if(m>0){ 
      Han(m-1,a,c,b); 
      System.out.println("Move disc from "+a+" to "+b); 
      Han(m-1,b,a,c); 
     } 
    } 

    public static void main(String[]args){ 
     Scanner h = new Scanner(System.in); 
     System.out.println("How many discs : "); 
     int n = h.nextInt(); 
     Han(n, 'A', 'B', 'C'); 
    } 
} 
+0

你可以做一個'靜態INT計數器= 0;'只要你做'System.out.println(「將光盤從」+ a +「移動到」+ b);'在'Han(...)'中,你可以在其下面加上'counter ++;'。 – Compass 2014-09-22 21:10:07

+0

@Compass你能告訴我你在哪裏把我的代碼放在上面,它花了我一段時間才能完成這個工作,而不是再打破它 – Jamiex304 2014-09-22 21:21:17

+0

[Counter for Hanoi](http:// stackoverflow。 com/questions/10287847/counter-for-towers-of-hanoi) – ericbn 2014-09-22 21:38:06

回答

0

最簡單的方法是使用這樣一個靜態變量:

進口java.util.Scanner的;

public class Hanoi{ 

static int stepsCounter = 0; // new Code here. 

public static void Han(int m, char a, char b, char c){ 
if(m>0){ 
stepsCounter++; // new Code here. 
Han(m-1,a,c,b); 
System.out.println("Move disc from "+a+" to "+b); 
Han(m-1,b,a,c); 
} 
} 

public static void main(String[]args){ 
Scanner h = new Scanner(System.in); 
int n; 
System.out.println("How many discs : "); 
n = h.nextInt(); 
Han(n, 'A', 'B', 'C'); 
System.out.println("Steps : " + stepsCounter); // new Code here. 
} 
} 
+0

就像一個魅力工作謝謝 – Jamiex304 2014-09-22 23:13:52

0

而不是引進一個靜態變量(其中,其他關注的問題之一,是不是線程安全的),你也可以返回計數:

public static int Han(int m, char a, char b, char c){ 
    int count = 0; 
    if(m>0){ 
    count += Han(m-1,a,c,b); 
    System.out.println("Move disc from "+a+" to "+b); 
    count++; 
    count += Han(m-1,b,a,c); 
    } 
    return count; 
}