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;
}
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;
}