【问题标题】:How to write my Java program with the ACM library (ConsoleProgram)?如何使用 ACM 库 (ConsoleProgram) 编写我的 Java 程序?
【发布时间】:2013-04-29 13:35:30
【问题描述】:

我想问一个关于我的程序的小问题。

这是我的代码示例:

public static void main(String[] args) {
    int q;
    int p;
    int thelargest;
    int thesmallest;

    Scanner input = new Scanner(System.in);
    System.out.println("Enter the list of number : ");
    String input2 = input.nextLine();

    String[] numbers = input2.split(" ");

    int[] result = new int[numbers.length];
    for (p = 0; p < numbers.length; p++) {
        result[p] = Integer.parseInt(numbers[p]);

    }

    for (q = 0; q < result.length; q++) {
        System.out.print("");
        System.out.println(result[q]);
    }

    System.out.println("Largest Number :  " + LargestNumber(result));
    System.out.println(" Smallest Number :  " + SmallestNumber(result));
    thelargest = LargestNumber(result);
    thesmallest = SmallestNumber(result);
    System.out.println("The Arithmetic Mean : "
            + AirthmeticMean(result, thesmallest, thelargest));

}

public static int SmallestNumber(int[] series) {
    int thesmallest = series[0];
    for (int i = 1; i < series.length; i++) {
        if (series[i] < thesmallest) {

            thesmallest = series[i];
        }
    }
    return thesmallest;
}

public static int LargestNumber(int[] series) {
    int thelargest = series[0];
    for (int i = 1; i < series.length; i++) {
        if (series[i] > thelargest) {

            thelargest = series[i];
        }
    }
    return thelargest;
}

public static float AirthmeticMean(int[] result, int thesmallest,
        int thelargest) {
    int sum = 0;
    for (int i = 0; i < result.length; i++) {
        sum += result[i];
    }

    sum -= thesmallest;
    sum -= thelargest;

    return (float) sum / result.length;
}

如何将此代码示例转换为 ConsoleProgram(位于 ACM 库中)? 我必须更改或添加哪些部分?

我开始:

public class ArithmeticMean extends ConsoleProgram {

}

但我不知道下一步该做什么。

【问题讨论】:

    标签: java eclipse acm-java-libraries


    【解决方案1】:

    在 acm 库中没有 main 方法,但您需要使用以下构造来代替:

    public void run() {}
    

    这是这个库的 API http://jtf.acm.org/javadoc/student/ 选择 acm.program 包 ConsoleProgram 类并找到合适的方法 另请参阅 acm.io / IOConsole 类

    例如System.out.println() --> println() Scanner (String input) --> readLine(String prompt) etc.

    其余部分与您的代码相同。

    好的,这是您在 acm 中的代码:(有点难看,但工作正常:)

    import acm.program.ConsoleProgram;
    
    public class StackOverflow extends ConsoleProgram
    {
        private static final long serialVersionUID = 1L;
    
        public void run()
        {
            int q;
            int p;
            int thelargest;
            int thesmallest;
            String input2 = "";
            String[] numbers = null;
    
            println("Enter the list of number : ");
            while (true) {
                String input = readLine();
                if (input.equals(""))
                    break;
                input2 += input + " ";
            }
            numbers = input2.split(" ");
    
            int[] result = new int[numbers.length];
            for (p = 0; p < numbers.length; p++) {
                result[p] = Integer.parseInt(numbers[p]);
    
            }
    
            for (q = 0; q < result.length; q++) {
                print("");
                println(result[q]);
            }
    
            println("Largest Number :  " + LargestNumber(result));
            println(" Smallest Number :  " + SmallestNumber(result));
            thelargest = LargestNumber(result);
            thesmallest = SmallestNumber(result);
            println("The Arithmetic Mean : "
                    + AirthmeticMean(result, thesmallest, thelargest));
    
        }
    
        public static int SmallestNumber(int[] series)
        {
            int thesmallest = series[0];
            for (int i = 1; i < series.length; i++) {
                if (series[i] < thesmallest) {
    
                    thesmallest = series[i];
                }
            }
            return thesmallest;
        }
    
        public static int LargestNumber(int[] series)
        {
            int thelargest = series[0];
            for (int i = 1; i < series.length; i++) {
                if (series[i] > thelargest) {
    
                    thelargest = series[i];
                }
            }
            return thelargest;
        }
    
        public static float AirthmeticMean(int[] result, int thesmallest,
                int thelargest)
        {
            int sum = 0;
            for (int i = 0; i < result.length; i++) {
                sum += result[i];
            }
    
            sum -= thesmallest;
            sum -= thelargest;
    
            return (float) sum / result.length;
        }
    
    }
    

    并作为 JavaApplet 运行

    【讨论】:

    • 好的,那我是不是应该只擦掉main方法,改一下打印方法,把我的程序转成consoleprogram?
    • AFAIK“扫描仪”也应该改变
    • 你能在我的代码示例中展示它们吗?非常感谢我的朋友。
    • 我应该只添加这个来制作我的程序控制台吗?我会把它写到我的代码中,但我对其余部分有疑问。
    • 非常感谢我的朋友。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-29
    • 1970-01-01
    • 1970-01-01
    • 2010-09-08
    • 2023-02-03
    • 2011-07-25
    • 1970-01-01
    相关资源
    最近更新 更多