Java, неправильный вывод в виде TXT-файла (просто два введенных значения из консоли и вывести значение сложения)
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, я действительно новый в Java и не может понять эту проблему.
1 ответ
Когда я запускаю это, я получаю ожидаемый результат в 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;
}