2016-02-12 12 views
-2

您好,我正在嘗試重置java中的一個計數器,因爲我需要輸出數字的因子數目和因子總和。當我輸入多個整數值時,這些計數器不斷累加。 java中有一種方法可以在每次輸入新的整數後重置計數器嗎?這是我的代碼到目前爲止。如何在Java中重置多個輸入的計數器?

import java.util.Scanner; 

public class FindFactors { 

    public static void main (String args[]) { 
    Scanner in = new Scanner(System.in); 
    int num, factorcounter = 0; 
    int sumfactors = 0; 
    System.out.print("Enter a positive integer."); 
    while(in.hasNextInt()) { 
     num = in.nextInt(); 
     if(num > 0) { 
     for(int i = 1; i <= num; i++) { 
      if(num % i == 0) { 
      factorcounter++; 
      System.out.println(i + " is a factor of " + num); 
      sumfactors = sumfactors + i; 
      } 
     } 
     System.out.println("The number of factors: " + factorcounter); 
     if (sumfactors/2 == num) { 
      System.out.println(num + " is a perfect number!"); 
     } 
     } 
     else { 
     System.out.println("Invalid Input"); 
     } 
    } 
    } 
} 
+0

你爲什麼問java?你會如何用另一種語言來做到這一點?一樣的。只需在想要重置變量的位置(例如,在讀取新數字之後)指定所需的值(例如0)即可。例如,'num = 0;'將計數器'num'的值設置爲0 – vefthym

+0

對不起,我問了Java,因爲我正在寫代碼,我不確定該方法在其他語言中是否相同。感謝您的幫助。 –

回答

0

你必須給你的變量賦零。

Scanner in = new Scanner(System.in); 
    int num,factorcounter = 0; 
    int sumfactors = 0; 
    System.out.print("Enter a positive integer."); 
    while(in.hasNextInt()) 
{ 

     num = in.nextInt(); 

     factorcounter = 0; 
     sumfactors = 0; 

     if(num > 0) 
     { 
      for(int i = 1; i <= num; i++) 
      { 
       if(num % i == 0) 
       { 
         factorcounter++; 
         System.out.println(i + " is a factor of " + num); 
         sumfactors = sumfactors + i; 
       } 
      } 
      System.out.println("The number of factors: " + factorcounter); 
      if (sumfactors/2 == num) 
      { 
           System.out.println(num + " is a perfect number!"); 
      } 

     } 
     else 
     { 
         System.out.println("Invalid Input"); 
     } 
} 
+0

謝謝你的幫助! –