<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # Java 控制臺應用 原文:http://zetcode.com/java/console/ Java 控制臺應用教程顯示了如何創建 Java 控制臺應用。 該應用計算一些統計信息。 ## Java 控制臺示例 以下示例創建一個 Java 控制臺應用,該應用從 CSV 文件讀取數據并計算一些基本統計信息。 該示例使用 Apache Commons 庫來解析命令行參數,進行數學運算和轉換數據。 OpenCSV 庫用于讀取 CSV 數據。 `src/resources/data.csv` ```java 2.3, 3.5, 5, 6.7, 3.2, 1.2, 6.7, 7.8 4.5, 2.1, 6.6, 8.7, 3.2, 1.0, 1.2, 3 ``` 這是數據文件。 文件名將是我們程序的控制臺參數。 ```java pom.xml src ├───main │ ├───java │ │ └───com │ │ └───zetcode │ │ JavaStatsEx.java │ │ MyStatsApp.java │ └───resources │ data.txt └───test └───java ``` 這是項目結構。 `pom.xml` ```java <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.zetcode</groupId> <artifactId>javastatsex</artifactId> <version>1.0-SNAPSHOT</version> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>12</maven.compiler.source> <maven.compiler.target>12</maven.compiler.target> </properties> <dependencies> <dependency> <groupId>commons-cli</groupId> <artifactId>commons-cli</artifactId> <version>1.4</version> </dependency> <dependency> <groupId>com.opencsv</groupId> <artifactId>opencsv</artifactId> <version>4.6</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-math3</artifactId> <version>3.6.1</version> </dependency> </dependencies> </project> ``` 在`pom.xml`文件中,我們定義了應用的依賴項。 `commons-cli`工件用于解析命令行參數,`opencsv`用于讀取 CSV 數據,`commons-math`用于統計計算,`commons-lang3`用于將列表轉換為數組。 `exec-maven-plugin`從 Maven 執行 Java 程序。 在`arguments`標簽中,我們為應用提供了選項和文件名。 `com/zetcode/JavaStatsEx.java` ```java package com.zetcode; /** * Starter class for MyStats application. * * @author janbodnar */ public class JavaStatsEx { /** * Application entry point. * * @param args application command line arguments */ public static void main(String[] args) { var app = new MyStatsApp(); app.run(args); } } ``` `JavaStatsEx`是應用入口點。 它創建`MyStatsApp`的實例,并將其傳遞給應用參數。 `com/zetcode/MyStatsApp.java` ```java package com.zetcode; import com.opencsv.CSVReaderBuilder; import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.CommandLineParser; import org.apache.commons.cli.DefaultParser; import org.apache.commons.cli.HelpFormatter; import org.apache.commons.cli.Options; import org.apache.commons.cli.ParseException; import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.math3.stat.StatUtils; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; import java.util.ArrayList; /** * MyStatsApp is a simple console application which computes * basic statistics of a series of data values. The application takes * a file of data as its single argument. * * @author janbodnar */ public class MyStatsApp { /** * Runs the application * * @param args an array of String arguments to be parsed */ public void run(String[] args) { CommandLine line = parseArguments(args); if (line.hasOption("filename")) { System.out.println(line.getOptionValue("filename")); String fileName = line.getOptionValue("filename"); double[] data = readData(fileName); calculateAndPrintStats(data); } else { printAppHelp(); } } /** * Parses application arguments * * @param args application arguments * @return <code>CommandLine</code> which represents a list of application * arguments. */ private CommandLine parseArguments(String[] args) { Options options = getOptions(); CommandLine line = null; CommandLineParser parser = new DefaultParser(); try { line = parser.parse(options, args); } catch (ParseException ex) { System.err.println("Failed to parse command line arguments"); System.err.println(ex.toString()); printAppHelp(); System.exit(1); } return line; } /** * Reads application data from a file * * @param fileName file of application data * @return array of double values */ private double[] readData(String fileName) { var data = new ArrayList<Double>(); double[] mydata = null; try (var reader = Files.newBufferedReader(Paths.get(fileName)); var csvReader = new CSVReaderBuilder(reader).build()) { String[] nextLine; while ((nextLine = csvReader.readNext()) != null) { for (String e : nextLine) { data.add(Double.parseDouble(e)); } } mydata = ArrayUtils.toPrimitive(data.toArray(new Double[0])); } catch (IOException ex) { System.err.println("Failed to read file"); System.err.println(ex.toString()); System.exit(1); } return mydata; } /** * Generates application command line options * * @return application <code>Options</code> */ private Options getOptions() { var options = new Options(); options.addOption("f", "filename", true, "file name to load data from"); return options; } /** * Prints application help */ private void printAppHelp() { Options options = getOptions(); var formatter = new HelpFormatter(); formatter.printHelp("JavaStatsEx", options, true); } /** * Calculates and prints data statistics * * @param data input data */ private void calculateAndPrintStats(double[] data) { System.out.format("Geometric mean: %f%n", StatUtils.geometricMean(data)); System.out.format("Arithmetic mean: %f%n", StatUtils.mean(data)); System.out.format("Max: %f%n", StatUtils.max(data)); System.out.format("Min: %f%n", StatUtils.min(data)); System.out.format("Sum: %f%n", StatUtils.sum(data)); System.out.format("Variance: %f%n", StatUtils.variance(data)); } } ``` 這是`MyStatsApp`。 ```java CommandLine line = parseArguments(args); ``` `parseArguments()`方法解析命令行參數。 它返回`CommandLine`,它代表針對`Options`描述符解析的參數列表。 ```java if (line.hasOption("filename")) { System.out.println(line.getOptionValue("filename")); String fileName = line.getOptionValue("filename"); double[] data = readData(fileName); calculateAndPrintStats(data); } else { printAppHelp(); } ``` 該應用具有強制性的文件名選項,該選項指向要讀取的文件并從中計算統計信息。 如果不存在,我們將提供應用幫助消息。 ```java Options options = getOptions(); ``` `getOptions()`方法返回應用的選項。 ```java try { line = parser.parse(options, args); } catch (ParseException ex) { System.err.println("Failed to parse command line arguments"); System.err.println(ex.toString()); printAppHelp(); System.exit(1); } return line; ``` `CommandLineParser`解析命令行參數。 如果存在`ParseException`,則應用退出。 解析器在`CommandLine`對象中返回已解析的參數。 ```java try (var reader = Files.newBufferedReader(Paths.get(fileName)); var csvReader = new CSVReaderBuilder(reader).build()) { ``` `CSVReader`用于讀取 CSV 數據。 ```java String[] nextLine; while ((nextLine = csvReader.readNext()) != null) { for (String e : nextLine) { data.add(Double.parseDouble(e)); } } ``` 在此`while`循環中,我們逐行讀取 CSV 文件,并將數據解析為`Double`值列表。 ```java mydata = ArrayUtils.toPrimitive(data.toArray(new Double[0])); ``` 我們需要原始數據類型來計算統計信息。 因此,我們將列表轉換為原始雙精度值數組。 `ArrayUtils`來自 Apache Commons Lang 庫。 ```java private Options getOptions() { var options = new Options(); options.addOption("f", "filename", true, "file name to load data from"); return options; } ``` `getOptions()`提供應用選項。 ```java private void printAppHelp() { Options options = getOptions(); var formatter = new HelpFormatter(); formatter.printHelp("JavaStatsEx", options, true); } ``` `printAppHelp()`打印應用的幫助。 它使用`HelpFormatter`來完成工作。 ```java private void calculateAndPrintStats(double[] data) { System.out.format("Geometric mean: %f%n", StatUtils.geometricMean(data)); System.out.format("Arithmetic mean: %f%n", StatUtils.mean(data)); System.out.format("Max: %f%n", StatUtils.max(data)); System.out.format("Min: %f%n", StatUtils.min(data)); System.out.format("Sum: %f%n", StatUtils.sum(data)); System.out.format("Variance: %f%n", StatUtils.variance(data)); } ``` 使用`StatUtils()`,我們可以計算一些統計數據。 `StatUtils()`采用 Java 數組作為參數。 ```java src/main/resources/data.txt Geometric mean: 3.412562 Arithmetic mean: 4.168750 Max: 8.700000 Min: 1.000000 Sum: 66.700000 Variance: 6.158292 ``` 這是輸出。 在本教程中,我們創建了一個簡單的 Java 控制臺應用,該應用從 CSV 文件計算基本統計信息。 列出[所有 Java 教程](/all/#java)。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看