2016-02-12 47 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

谢谢你的帮助! –