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作为选项(这使得程序通过选择切换进行添加),即System的结果。 out.print是正确的,它是16,但是使用PrintWriter输出的结果不正确,不仅是值,还有值类型,它是float(或double,但它应该是int),值为168483.0,I我是java的新手,无法弄清楚这个问题。
答案 0 :(得分:3)
当我运行它时,我在result.txt
文件中得到了预期的输出,但后面是其他数字。
这种情况正在发生,因为您在每个break
中都没有case
语句,因此会计算总和(案例#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;
}