代码之家  ›  专栏  ›  技术社区  ›  wuno

如何允许预定义数量的条目进入java程序

  •  1
  • wuno  · 技术社区  · 12 年前

    我的程序允许用户输入20个条目。每个条目都作为一个条目输入,然后从命令行中按enter。我想增加程序的功能 “您还剩20个条目” 然后 “您还剩19个条目” 等等…当用户向程序中输入更多数据时。

    如果有人能告诉我最简单的方法将其添加到当前代码中,我将不胜感激。

    import java.util.ArrayList;
    import java.util.Scanner;
    
    class project02Diaz
    {   
        private static Double calculate_average( ArrayList<Double> myArr )
        {
            Double sum = 0.0;
            for (Double number: myArr)
            {
                sum += number;
            }
            return sum/myArr.size(); 
        }
    
        public static void main( String[] args )
        {
            Scanner           scan  = new Scanner(System.in);
            ArrayList<Double> myArr = new ArrayList<Double>();
            int               count = 0;
    
            System.out.println("Enter one number at a time be averaged, you have 20 entries remaining:");
    
            for (String inputs = scan.nextLine() ; !inputs.matches("[qQ]")  ; inputs = scan.nextLine())
            {
                if (count == 20)
                {
                    System.out.println("You entered more than 20 numbers, you suck!");
                    break;
                }
                try{
                    myArr.add(Double.valueOf(inputs));
                    count++; 
                    System.out.println("Please enter another number or press Q for your average");
                }
                catch (NumberFormatException e) {
                    System.out.println("Try again you tard! You entered more than one number, or not a valid number at all.");
                    continue;                   
                }      
    
            }
            Double average = calculate_average(myArr);
            System.out.println("Your average is: " + average);
        }
    }
    
    2 回复  |  直到 12 年前
        1
  •  2
  •   Johannes H.    12 年前

    又是你!好吧,我也要做那个。你不需要改变太多:只需从20开始倒数计数器,每次都输出它的staut。此外,如果达到0,请停止。

    public static void main( String[] args )
    {
        Scanner           scan        = new Scanner(System.in);
        ArrayList<Double> myArr       = new ArrayList<Double>();
        int               entriesLeft = 20; // changed counter that counts upwards to one counting down.
    
        System.out.println("Enter one number at a time be averaged, you have 20 entries remaining:");
    
        // added additional condition to be checked: we now also stop if maximum number of entries ie reached.
        for (String inputs = scan.nextLine() ; entriesLeft > 0 && !inputs.matches("[qQ]")  ; inputs = scan.nextLine())
        {
            try{
                myArr.add(Double.valueOf(inputs));
                entriesLeft--; //counting one down
                System.out.println("Please enter another number or press Q for your average");
                // telling user how much numbers are left
                System.out.println("You have " + entriesLeft + "numbers left.");
            }
            catch (NumberFormatException e) {
                System.out.println("Try again you tard! You entered more than one number, or not a valid number at all.");
                continue;                   
            }      
    
        }
        Double average = calculate_average(myArr);
        System.out.println("Your average is: " + average);
    }
    

    注意,附加整数 entriesLeft 字符串不是超级高效的,更好的方法是调用 Integer.toString(entriesLeft) .

        2
  •  0
  •   Bhushan    12 年前
    import java.util.ArrayList;
    import java.util.Scanner;
    class project02Diaz
    {   
        private static Double calculate_average( ArrayList<Double> myArr )
    {
        Double sum = 0.0;
        for (Double number: myArr)
        {
            sum += number;
        }
        return sum/myArr.size(); 
    }
    
        public static void main( String[] args )
        {
            Scanner           scan  = new Scanner(System.in);
            ArrayList<Double> myArr = new ArrayList<Double>();
            int               count = 0;
    
            System.out.println("Enter one number at a time be averaged, you have 20 entries remaining:");
    
            for (String inputs = scan.nextLine() ; !inputs.matches("[qQ]")  ; inputs = scan.nextLine())
            {
            System.out.println("You have "+ String.valueOf(20 - count -1) +" number of enteries left");
            if (count == 19)
                {
                    System.out.println("You entered more than 20 numbers, you suck!");
                    break;
                }
                try{
                    myArr.add(Double.valueOf(inputs));
                    count++; 
                    System.out.println("Please enter another number or press Q for your average");
                }
                catch (NumberFormatException e) {
                    System.out.println("Try again you tard! You entered more than one number, or not a valid number at all.");
                    continue;                   
                }      
            }
            Double average = calculate_average(myArr);
            System.out.println("Your average is: " + average);
        }
    }