2014-10-28 42 views
-1

我正在爲我的高中組合編寫一個實驗。 SCI。類。該程序的目標是從一個文件中讀取數據,每次一個整數並打印一個倒三角形。在java中的do-while循環中嵌入for循環的問題

的數據是與一個txt文件:3 3 7 4(在該文件中的數據被垂直地3在頂部佈置,但我不能格式化這裏出於某種原因)

我再變所述.txt擴展.dat

它應該打印與頂部行是3和具有1個以下星號的每個連續行倒三角形(再次,我不能找出如何格式化此。我想和它沒有工作)。如果int是3,那麼最上面的一行是3,如果int是7,那麼最上面的一行是7等等。

我陷入嵌套的for-loop,雖然我有我的遞減運算符,最終應該得到循環終止,但它不。你會看到總的怪異。

public class Triangle2_PR31 
{ 

    public static void main(String[] args) throws IOException 
    { 
     Scanner triScan = new Scanner(new File("pr31.dat"));//reads file 
     int a = triScan.nextInt(); 
     System.out.println(a);//prints number for verification 
     int b;//instantiate 

     do 
     { 
      //a = triScan.nextInt(); 
      for(int x = 1; x<=a; x--)//main for-loop 
      { 
       for(b = a; b>=0; b--)//nested for-loop to print asterisks 
       { 
        System.out.print("*"); 
        System.out.println(b);//print to see what happened to b 
       } 
       System.out.println(b);//print to see if loops gets out here 
       a--;//decrease a so loop eventually terminates 
       //Doesnt get out here 
      } 
     }  
     while(triScan.hasNext()); 
     triScan.close(); 
    }  
} 

當編譯器獲取到SOP(b);線嵌套for循環中,事情會一路到負50000我手動終止程序之前,我讓他去約200,000一次樂趣。我不明白爲什麼它不會簡單地終止。我盯着日食10分鐘嘗試各種不同的東西,但我不知道什麼是錯的。

+1

你的第一個for循環應該是x ++的初學者 – Revive 2014-10-28 00:58:42

+0

true。我沒有注意到這一點。我知道這將是我面前的事情。在我發佈這個問題後大約一個小時,我正在處理這個問題,但沒有注意到我有錯誤的操作符。 – Ungeheuer 2014-10-28 02:39:41

回答

1

您的主for循環以與a減小相同的速率減少x,所以x永遠不會比導致無限循環更大。

+0

很好的解釋。你得到一個+1。 – Ungeheuer 2014-10-28 02:40:53

1

你必須在第一這樣的評價 「爲」:

for (int x = 1; x <= a; x--)

「X」 將永遠是小於一。

它必須是​​沒有雙引號。

+0

是的,我在發佈這個問題後工作了一個小時,從未意識到我有錯誤的操作符。有時我覺得很蠢。 – Ungeheuer 2014-10-28 02:40:27