【问题标题】:Java -- How to make a continous counter (1 + 2 = 3; + 3 = 6) etcJava -- 如何进行连续计数 (1 + 2 = 3; + 3 = 6) 等
【发布时间】:2015-03-30 18:37:57
【问题描述】:

我不确定这在 Java 中是否可行。我刚学完 Python 并参加了网页设计课程,所以我的大脑还没有与 Java 同步。 我希望它是这样的

double yourInput = input.nextDouble();

double numCount = (numCount + yourInput); 

例如,如果我输入 2、7 和 9(它会循环),我希望它执行以下操作:numCount = 0;然后 numCount = 0 + 2;然后 numCount = 2 + 7;然后 numCount = 9 + 9。

这在 Java 中可能吗?如果是这样,怎么做?

【问题讨论】:

  • 为什么不,你可以。尝试并卷土重来。
  • 是的,这当然是可能的。请先自己尝试一下。
  • 是的。它可以用Java完成。但是你不能同时声明一个变量并使用它。

标签: java counter


【解决方案1】:

只需循环使用input.hasNextDouble():

//give default value
double numCount = 0;

//while user is still giving input
while(input.hasNextDouble()) {
    //get input
    double yourInput = input.nextDouble();
    //add input
    numCount += yourInput; 
}

//output
System.out.println("total = " + numCount);

【讨论】:

    【解决方案2】:
    Algorithm CONTINOUS_COUNTER()
    BEGIN
        DECLARE inputReader : java.util.Scanner(System.in);
        DECLARE numCount    : Double;
    
        SET numCount := 0.0; //Setting the default value to the counter;
    
        LOOP until inputReader.hasNextDouble() returns TRUE
    
            numCount := numCount + inputReader.nextDouble();
    
        END LOOP;
    
        print "Num count = " + numCount;
    
    END;
    

    亲爱的 Katy,这是您开发此程序时应使用的逻辑。这只是一个算法。我认为在这里发布真正的程序并不好,因为您正在学习Java。尝试将此算法转换为 Java 代码。学习它。 :)

    【讨论】:

    • LOOP until inputReader.hasNextDouble() returns TRUE ?真的吗?
    • 大卫,我已经说过,这只是一个算法。真正的逻辑是 while(inputReader.hasNextDouble()) {} :)
    • 是的,但这与你写的相反。另外,我不确定用一种全新的编程语言来回答“这可以在 Java 中完成”的问题是否有价值。 Katy 自称精通 Python,因此想必完全能够提出正确的算法。
    【解决方案3】:

    这是一个工作示例:

    import javax.swing.JOptionPane;
    
    
    public class DoubleCounter {
    
    private static double total = 0.0;
    
    
    
    public static void run(){
        while(true){
            String input = JOptionPane.showInputDialog("Total Count: "+ total+" add next double: ");
            try{
                double next = Double.parseDouble(input);
                total+=next;
            }catch(NumberFormatException nfe){
                JOptionPane.showMessageDialog(null, "Wrong input! You must get a valid number!");
                continue;
            }
    
    
            }
        }
    
    public static void main(String[] args) {
        DoubleCounter.run();
    
    }
    

    }

    您使用静态成员总计数定义了一个类 DoubleCounter。 该类有一个 run() 方法,可以无限循环并显示广告 InputDialog。 输入对话框总是返回一个我们“尝试”解析为双精度的字符串。 如果解析没有问题,我们将结果添加到总数中。

    该类有一个 main 方法,它是“静态”调用 DoubleCounter 的 run() 方法的应用程序入口点。

    我建议你看看 'static' 修饰符如何作用于类成员(total)和方法(run())。

    希望对你有所帮助!

    【讨论】:

      【解决方案4】:

      凯蒂,这才是真正的节目。

      import java.util.Scanner;
      
      public class ContinousCounter{
          public static void main(final String [] args){
              double  numCount        =  0.0;
              Scanner inputReader     =  new Scanner(System.in);
              System.out.println("Enter the values : ");
              while(inputReader.hasNextDouble()){ numCount += inputReader.nextDouble();}
      
              System.out.printf("The value for numCount = %f",numCount);
          }
      }
      

      【讨论】:

      • 这里根本不需要“yourInput”变量。所以最好避免它。 :)
      【解决方案5】:

      为了执行我认为您在此处所说的操作,您应该使用while 循环。这很简单,只要想想你希望它如何工作。它将循环一段代码,将扫描仪的下一行添加到总和中

      double mySum = 0;
      
      while(input.nextDouble() != 0){
          double myInput = input.nextDouble();
          mySum += myInput;
      }
      

      在上面的循环中,我们假设当扫描仪的下一行是 0 时没有更多的数字要添加,但是可以调整它以便在其他时间停止。

      我可以看到,既然你已经完成了一门 Python 编程课程,你能够提出这个逻辑并且只是在寻找约定或正确的语法,所以让我们解释一下上面的工作原理:

      1. while 循环将运行,只要您让它处理的语句评估为 true,如果您希望它在 false 时执行某些操作,您可以在语句前使用感叹号并将参数括在括号中,例如以下:
        while (!(x<=2))
        while 循环具有以下语法(逻辑形式):
        while (boolean) {run this code}
      2. 您可以使用简写将myInput 添加到您的mySum+= 会将右侧添加到左侧并保存该值
      3. 如果您想在不考虑值的情况下至少运行一次代码,您可以使用do while 循环。其背后的逻辑是:
        do {this} while (boolean);

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-19
        • 1970-01-01
        • 2012-07-30
        • 2021-12-22
        • 1970-01-01
        • 2022-06-17
        相关资源
        最近更新 更多