java,txt文件形式的输出不正确(简单的从控制台输入两个值,输出相加的值)

java, incorrect output in the form of txt file (simple two inputed values from the console and output the value of addition)

import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.Scanner;

public class Test {
    public static void main(String[] args) throws FileNotFoundException{
        int option = 0;
        int a;
        int b;

        System.out.println("Input the type of the calculation:");

        Scanner in = new Scanner(System.in);
        PrintWriter out = new PrintWriter(new File("C:\Users\123\Desktop\result.txt"));

        option = in.nextInt();

        System.out.println("Input the two values:");
        System.out.print("a:");
        a = in.nextInt();

        System.out.print("b:");
        b = in.nextInt();

        in.close();

        // the Calculation:
        switch(option) {
        case 1:
            out.write(Integer.toString(a+b));
            System.out.println(a + b);
        case 2:
            out.write(Integer.toString(a - b));
        case 3:
            out.write(Integer.toString(a * b));
        case 4:
            out.write(Double.toString(1.0 * a / b));
        }

        out.flush();
        out.close();
    }
}

这是代码,我使用a=12,b=4的值作为测试例子,我在选项中输入1(这使得程序从switch的选择中进行加法),结果是System.out.print是对的就是16,但是用PrintWriter输出的结果不对,不仅是数值,而且数值类型是float(也可以是double,但应该是int),值为168483.0 , 我是 java 的新手,无法弄清楚这个问题。

当我 运行 这样做时,我在 result.txt 文件中得到了预期的输出,但后面跟着其他数字。

发生这种情况是因为您在每个 case 中没有 break 语句,因此计算总和(案例 #1),但随后代码 失败通过减法(案例#2),然后乘法和除法,将每个结果输出到文件中,没有分隔符或换行符来分隔它们。

您的输出是 168483.0 -- 这是:
• 12 + 4 = 16
• 12 - 4 = 8
• 12 * 4 = 48
• 12 / 4 = 3.0
间距看起来像:16 8 48 3.0

包含 default: 案例也是一种很好的做法,例如,如果有人输入 9 作为计算类型会怎样。

这将使您的 switch 语句看起来像这样:

switch(option) {
    case 1:
        out.write(Integer.toString(a+b));
        System.out.println(a + b);
        break;            // <---- added a "break" for each case
    case 2:
        out.write(Integer.toString(a - b));
        break;
    case 3:
        out.write(Integer.toString(a * b));
        break;
    case 4:
        out.write(Double.toString(1.0 * a / b));
        break;
    default:
        System.out.println("Operations are: 1=add 2=subtract 3=multiply 4=divide");
        break;
}