1+ // src/main/java/com/example/BuggyCalculator.java
2+ package net .lvsq .jgossip ;
3+
4+ import java .io .FileWriter ;
5+ import java .io .IOException ;
6+ import java .util .ArrayList ;
7+ import java .util .List ;
8+ import java .util .logging .Level ;
9+ import java .util .logging .Logger ;
10+
11+ public class BuggyCalculator {
12+
13+ private static final Logger logger = Logger .getLogger (BuggyCalculator .class .getName ());
14+
15+ public double divide (int numerator , int denominator ) {
16+ // 潜在 Bug 1: 除以零未处理
17+ // 潜在 Bug 2: 返回 double,但参数是 int,可能导致精度问题(如果结果需要精确)
18+ return numerator / denominator ;
19+ }
20+
21+ public int multiply (int a , int b ) {
22+ // 潜在 Bug 3: 整数溢出未检查
23+ return a * b ;
24+ }
25+
26+ public String concatenateStrings (String s1 , String s2 ) {
27+ // 潜在 Bug 4: 频繁创建 String 对象,性能差(应使用 StringBuilder/StringBuffer)
28+ String result = "" ;
29+ result = result + s1 ;
30+ result = result + s2 ;
31+ return result ;
32+ }
33+
34+ public void processData (List <String > data ) {
35+ // 潜在 Bug 5: 迭代过程中修改集合(ConcurrentModificationException)
36+ for (String item : data ) {
37+ if (item .equals ("remove" )) {
38+ data .remove (item );
39+ }
40+ }
41+ }
42+
43+ public void writeToFile (String filename , String content ) throws IOException {
44+ // 潜在 Bug 6: 资源未关闭(try-with-resources 缺失)
45+ // 潜在 Bug 7: 异常处理过于宽泛,直接抛出,没有日志记录或更细致处理
46+ FileWriter writer = null ;
47+ try {
48+ writer = new FileWriter (filename );
49+ writer .write (content );
50+ } finally {
51+ if (writer != null ) {
52+ writer .close (); // 即使写入失败,也应尝试关闭
53+ }
54+ }
55+ }
56+
57+ public boolean checkPermission (String userRole ) {
58+ // 潜在 Bug 8: 硬编码权限逻辑,不易维护和扩展
59+ if (userRole == "admin" ) { // 潜在 Bug 9: 字符串比较使用 == (应使用 .equals())
60+ return true ;
61+ } else if (userRole .equals ("guest" )) {
62+ return false ;
63+ } else {
64+ return false ;
65+ }
66+ }
67+
68+ // 潜在 Bug 10: 未使用的私有方法
69+ private void unusedPrivateMethod () {
70+ System .out .println ("This method is never called." );
71+ }
72+
73+ public static void main (String [] args ) {
74+ BuggyCalculator calculator = new BuggyCalculator ();
75+
76+ // 测试除法
77+ System .out .println ("Division: " + calculator .divide (10 , 2 ));
78+ // System.out.println("Division by zero: " + calculator.divide(10, 0)); // 会导致运行时错误
79+
80+ // 测试乘法
81+ System .out .println ("Multiplication: " + calculator .multiply (Integer .MAX_VALUE , 2 )); // 溢出
82+
83+ // 测试字符串连接
84+ System .out .println ("Concatenation: " + calculator .concatenateStrings ("Hello" , "World" ));
85+
86+ // 测试列表处理
87+ List <String > myData = new ArrayList <>();
88+ myData .add ("item1" );
89+ myData .add ("remove" );
90+ myData .add ("item2" );
91+ myData .add ("remove" );
92+ System .out .println ("Original list: " + myData );
93+ calculator .processData (myData ); // 可能会抛出 ConcurrentModificationException
94+ System .out .println ("Processed list: " + myData );
95+
96+ // 测试文件写入
97+ try {
98+ calculator .writeToFile ("test.txt" , "This is a test file content." );
99+ System .out .println ("File written successfully." );
100+ } catch (IOException e ) {
101+ logger .log (Level .SEVERE , "Error writing to file" , e ); // 简单的日志记录
102+ }
103+
104+ // 测试权限检查
105+ System .out .println ("Admin permission: " + calculator .checkPermission ("admin" ));
106+ System .out .println ("Guest permission: " + calculator .checkPermission ("guest" ));
107+ System .out .println ("Unknown role permission: " + calculator .checkPermission ("developer" ));
108+ }
109+ }
0 commit comments