一、前言
我有个习惯,学习任何一门编程语言都不喜欢上来就各种重型IDE、项目管理工具。所以,放到Java上,我还是喜欢直接用javac编译,然后直接运行。
二、安装
1.安装包
下载JDK并安装到本地。
2.操作
E:\2setsoft\1dev\jdk1.8.0_77添加到环境变量,改名为JAVA_HOME
3.验证
cmd输入javac -version查看版本号,表示成功。
三、项目创建
1.创建java单文件
比如Hello.java文件。
2.添加打印代码
1 2 3 4 5 6 7 8
| public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World! 2025-10-14 13:50"); } }
|
3.编译代码
将上面的HelloWorld类编译成class
1
| javac -encoding UTF-8 HelloWorld.java
|
运行成功后在当前文件夹下会生成 HelloWorld.class
4.运行代码
在当前文件夹下,找到生成的class,然后命令输入。
6.打包成jar
前面也是要先将程序编译成class,然后运行下面代码。
1
| jar cvf Calculator.jar Calculator.class
|
四、附加
1.java版计算器程序
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144
| import java.util.Scanner; import java.util.ArrayDeque; import java.util.Deque; public class Calculator { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("🧮 Java 控制台计算器"); System.out.println("════════════════════"); System.out.println(" 支持操作: +, -, *, /"); System.out.println(" 输入格式: 数字 运算符 数字 (如: 2 + 3 * 4)"); System.out.println(" 输入 'exit' 退出程序"); System.out.println("════════════════════"); while (true) { System.out.print("➤ 输入表达式: "); String input = scanner.nextLine().trim(); if (input.equalsIgnoreCase("exit")) { System.out.println("🛑 程序已退出"); break; } if (input.isEmpty()) { System.out.println("⚠️ 错误:输入不能为空"); continue; } try { double result = evaluateExpression(input); System.out.printf("✅ 计算结果: %s = %.2f\n\n", input, result); } catch (Exception e) { System.out.println("❌ 错误: " + e.getMessage()); } } scanner.close(); }
public static double evaluateExpression(String expression) { String expr = expression.replaceAll("\\s+", ""); if (!expr.matches("[\\d.+\\-*/]+")) { throw new IllegalArgumentException("包含非法字符"); } Deque<Double> numbers = new ArrayDeque<>(); Deque<Character> operators = new ArrayDeque<>(); for (int i = 0; i < expr.length(); i++) { char c = expr.charAt(i); if (Character.isDigit(c) || c == '.') { StringBuilder numBuilder = new StringBuilder(); while (i < expr.length() && (Character.isDigit(expr.charAt(i)) || expr.charAt(i) == '.')) { numBuilder.append(expr.charAt(i++)); } i--; try { double number = Double.parseDouble(numBuilder.toString()); numbers.push(number); } catch (NumberFormatException e) { throw new IllegalArgumentException("无效数字格式: " + numBuilder); } } else if (isOperator(c)) { while (!operators.isEmpty() && hasPrecedence(c, operators.peek())) { calculateTop(numbers, operators); } operators.push(c); } else { throw new IllegalArgumentException("无效字符: " + c); } } while (!operators.isEmpty()) { calculateTop(numbers, operators); } if (numbers.size() != 1 || !operators.isEmpty()) { throw new IllegalArgumentException("无效表达式格式"); } return numbers.pop(); }
private static void calculateTop(Deque<Double> numbers, Deque<Character> operators) { if (numbers.size() < 2 || operators.isEmpty()) { throw new IllegalArgumentException("运算符缺失"); } double b = numbers.pop(); double a = numbers.pop(); char op = operators.pop(); switch (op) { case '+': numbers.push(a + b); break; case '-': numbers.push(a - b); break; case '*': numbers.push(a * b); break; case '/': if (b == 0) throw new ArithmeticException("除零错误"); numbers.push(a / b); break; default: throw new IllegalArgumentException("不支持的操作符: " + op); } }
private static boolean hasPrecedence(char current, char previous) { if (previous == '(' || previous == ')') return false; return (current != '*' && current != '/') || (previous != '+' && previous != '-'); } private static boolean isOperator(char c) { return c == '+' || c == '-' || c == '*' || c == '/'; } }
|
五、写在后面
基本的单demo文件练习结束后,熟悉了程序编译和运行,但是对java的基础语法还是需要认真研究一下,虽然和C#类似,待更新~
