2016-09-29 77 views
1

對於學校,我們不得不做出一些表,列出Java的數字表奇怪的錯誤

  • 從1到20
  • 一系列爲int的那些相同數字的平方和立方
  • 平方和立方根這些數字。

我第一次做這個表格的時候數字沒有問題,但它不會組織有效的列,但是現在當我搞砸它時,它會創建列,但循環都是錯誤的。有誰知道可能發生了什麼,或者我可以怎樣修復它?

System.out.print ("Enter an integer between 1 and 20."); 
    int n= scan.nextInt(); 
     for (n=1; n<20; n++) 
     { 
       System.out.print (n++); 
       System.out.print (n*n + "\t" + " "); 
       System.out.print(n*n*n + "\t" + " "); 
       System.out.print (dec.format (Math.sqrt(n))+ "\t" + " "); 
       System.out.print (dec.format (Math.cbrt(n)) + "\t" + " "); 
       System.out.println(); 

       } 
       } 
//these are the original way I did the loops; just a different for-loop for each one right on top of one another. 
     //(n=1; n<=20; n++) 
     // (n=1; n<20; n++) 
     // (n=1; n<20; n++) 
     // (n=1; n<20; n++) 
+1

如果你想從1到20改變for循環條件爲for(n = 1; n <= 20; n ++),當前只會給出數字19.你可以共享你得到的輸出的屏幕 – Iqbal

回答

1

你的第一個print的說法是:

System.out.print(n++); 

這包含n++這將改變你的循環變量。這會弄糟你的輸出。此更改爲:

System.out.print(n); 

或者更好:

System.out.print (n + "\t" + " "); 

這是否解決您的問題?

而且,作爲伊克巴爾在註釋中提到,您for迴路應包括 20:

for (n = 1; n <= 20; n++) 

而且,這是什麼代碼的意義呢?

System.out.print ("Enter an integer between 1 and 20."); 
int n= scan.nextInt(); 

該值爲n從不使用。

+0

也許在第一個'print'之後想要一些TAB字符。 –

0

我不確定什麼是您的確切輸出格式所需;但我可以立即看到一個問題,即變量n的增量方式。你是雙重遞增變量n如下圖所示

//the for loop should be as below. 
for (n=1; n<=20; n++) 
     { 
       System.out.print (n++); //this line increments n again.Instead of this do System.out.print(n+1); 
       System.out.print (n*n + "\t" + " "); 
       System.out.print(n*n*n + "\t" + " "); 

如果按照評論那麼你的程序應該正常工作。如果你不熟悉Java或編程,你會想要真正瞭解各種操作符以及它們對操作變量的影響。例如,在此程序中使用的一元增量運算符++遞增變量的值並將其存儲回變量本身。

希望這會有所幫助。