Нужна помощь в оформлении при выводе значений и округления их в консоль java

Ниже представлен код программы и скрин вывода

Программа сама работает только вот не могу реализовать красивое оформление и округление до двух знаков.

Помогите решить проблемы.

Заранее спасибо!!!


Main.java
------------
        package com.company;
        import java.io.*;
        import java.util.*;
        import java.util.Scanner;

        public class Main {

        public static void main(String[] args) {
       // Scanner in = new Scanner(System.in);
        Scanner in; int counter;
        Complex[] st = null;
        boolean fail = true;
        try {
            do{
                System.out.println("Введите: ");
                System.out.println("1 - Ввод списка чисел и запись в файл");
                System.out.println("2 - Чтение списка чисел из файла");
                System.out.print(">");
                in = new Scanner(System.in);
                counter = in.nextInt();
                if (counter == 1){
                    fail = false;
                    st = new Complex[1];
                    for (int i = 0; i<st.length; i++){
                        st[i] = new Complex();
                        st[i].input();
                    }
                    BufferedWriter bw = new BufferedWriter(new FileWriter("D:\\Complex.txt"));
                    for (int i=0 ; i<1; i++){
                        st[i].diskOut(bw);
                    }
                    bw.close();
                }
                if (counter ==2 ){
                    fail = false;
                    System.out.print("Введите имя файла: ");
                    in = new Scanner(System.in);
                    String file_name = in.nextLine();
                    BufferedReader br = new BufferedReader(new FileReader(file_name));
                    st = new Complex[1];
                    for (int i = 0; i < 1; i++)
                    {
                        st[i] = new Complex();
                        st[i].diskIn(br);
                    }
                    br.close();
                }
            }
            while(fail);
            Arrays.sort(st);
            System.out.println("Список чисел: ");
            System.out.printf("%-20s%-20s%-20s%-30s\n","Число mRe","Число mIm","Модуль комплексного числа:","Комплексное число, обратное заданному:");
            for (int i=0; i< 1;i++)
                st[i].output();
        }
        catch (InputMismatchException e){ System.out.println("Это НЕ число!!!" + e);}
        catch (NumberFormatException e){ System.out.println("Ошибка чтения из файла " + e);}
        catch (Exception e) { System.out.println(e);}
    }
}
-------------------------
Complex.java
-------------------------
        package com.company;
        import java.util.*;
        import java.io.*;

        class Complex {

        private double mRe; // Действительная часть
        private double mIm; // Мнимая часть


        public Complex(double mRe, double mIm) {
            this.mRe = mRe;
            this.mIm = mIm;

        }
        public Complex() {
            this.mRe = 0;
            this.mIm = 0;
        }

        public void input() {
            Scanner in = new Scanner(System.in);
            System.out.println("Введите действительную часть числа: ");
            mRe = in.nextDouble();
            System.out.println("Введите мнимую часть числа: ");
            mIm = in.nextDouble();

        }

        public void output() {
            String str = String.format("%-20s%-20s%-20s%-20s\n",mRe, mIm, abs(), getReciprocal());
            System.out.println(str);
        }

        public double abs() {
            double ar = 0;
            ar = Math.sqrt(mRe * mRe + mIm * mIm);
            return ar;  // Модуль комплексного числа z=x+i*y определяется выражением |z| = sqrt(x^2+y^2).

        }

        // Для комплексного числа z обратное ему будет иметь вид: 1/z = x/(x^2+y^2) - i*y/(x^2+y^2)
        public Complex getReciprocal() {
            double denominator = mRe*mRe + mIm*mIm;
            if (denominator != 0) {
                return new Complex(mRe/denominator, -mIm/denominator);

            } else {
                System.out.printf("Некоректные значения для нахождения комплексного число, обратного к заданному\n\t", mRe, mIm);
                throw new IllegalStateException("z = 0"); // метод исключения
            }
        }

    public void diskOut(BufferedWriter bw) throws Exception {
        bw.write(mRe + "\r\n");
        bw.write(mIm + "\r\n");

    }
    public void diskIn(BufferedReader br) throws Exception{
        mRe = Integer.parseInt(br.readLine());
        mIm = Integer.parseInt(br.readLine());

    }
    @Override
    public String toString() {
        return "Re = " + mRe + ", Im = " + mIm;
    }
}

вывод программы


Ответы (1 шт):

Автор решения: стасевич
double value = 34.766674;
System.out.printf("%.3f",value); //34.766




double value = 34.766674;
String result = String.format("%.3f",value);
System.out.print(result);//  34,767
→ Ссылка