Home > Software design >  Print a StringBuilder on a TextArea with line break
Print a StringBuilder on a TextArea with line break

Time:01-24

I'm developing a system that calculates BMI. I'm making on NetBeans (I'm newbie in this IDE)

However i'm caught in a point... I'd like to print the values of a StringBuilder on a textArea with line break, but I can't do it.

The code (person class):

package Entities;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;

public class person {

    private String name;
    private Double weight;
    private Double height;
    private Double BMI;
    private String diagnosisDate;
    private String result;
    private Integer gender;

    public person() {

    }

    public person(Integer gender) {
        this.gender = gender;
    }

    public person(String name, Double weight, Double height, String diagnosisDate, Integer gender) {
        this.name = name;
        this.weight = weight;
        this.height = height;
        this.diagnosisDate = diagnosisDate;
        this.gender = gender;
    }

    public person(String name, Double weight, Double height, String diagnosisDate) {
        this.name = name;
        this.weight = weight;
        this.height = height;
        this.diagnosisDate = diagnosisDate;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Double getWeight() {
        return weight;
    }

    public void setWeight(Double weight) {
        this.weight = weight;
    }

    public Double getHeight() {
        return height;
    }

    public void setHeight(Double height) {
        this.height = height;
    }

    public Double getBMI() {
        return BMI;
    }

    public void setBMI(Double BMI) {
        this.BMI = BMI;
    }

    public String getDiagnosisDate() {
        return diagnosisDate;
    }

    public void setDiagnosisDate(String diagnosisDate) {
        this.diagnosisDate = diagnosisDate;
    }

    public String getResult() {
        return result;
    }

    public void setResult(String result) {
        this.result = result;
    }

    public Integer getGender() {
        return gender;
    }

    public void setGender(Integer gender) {
        this.gender = gender;
    }

    public void calculateBMI() {
        this.BMI = (this.weight / (Math.pow(this.height, 2)));
    }

    public String diagnosisDate() {
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm:ss");
        return dtf.format(LocalDateTime.now());
    }


    // BMI calculation - MALE
    public String BMIMale() {

        BMI = (weight / (Math.pow(height, 2)));

        double weightDifference;
        double getFatWeightQuantity;
        double loseWeightQuantity;

        StringBuilder sb = new StringBuilder();

        // Underweight
        if (BMI < 20.70) {

            result = "UnderWeight";
            weightDifference = (Math.pow(height, 2) * 18.50) - weight;

            sb.append("BMI Calculator");
            sb.append("Date of diagnosis: "   diagnosisDate());
            sb.append("Name: "   name);
            sb.append("Weight: "   weight);
            sb.append("Height: "   height);
            sb.append("BMI: "   BMI);
            sb.append("You need to fatten "   weightDifference   " to have a weight appropriate to your height");
            sb.append("");
            sb.append("RESULT: "   this.result   ".");

        }

        // Ideal Weight
        if (BMI >= 20.70 && BMI <= 26.40) {

            result = "Ideal Weight";
            weightDifference = (Math.pow(height, 2) * 18.50) - weight;

            getFatWeightQuantity = (Math.pow(height, 2) * 24.99) - weight;
            loseWeightQuantity = weight - (Math.pow(height, 2) * 18.50);

            sb.append("BMI Calculator");
            sb.append("Date of diagnosis: "   diagnosisDate());
            sb.append("Name: "   name);
            sb.append("Weight: "   weight);
            sb.append("Height: "   height);
            sb.append("BMI: "   BMI);
            sb.append("Your weight is ideal for your height!");
            sb.append("You can still gain "   getFatWeightQuantity   " or lose "   loseWeightQuantity
                      "kgs without leaving normality.");
            sb.append("");
            sb.append("RESULT: "   result   ".");

        }

        // Little Overweight
        if (BMI >= 26.50 && BMI <= 27.80) {

            result = " Little Overweight";
            weightDifference = weight - (Math.pow(height, 2) * 24.99);

            sb.append("BMI Calculator");
            sb.append("Date of diagnosis: "   diagnosisDate());
            sb.append("Name: "   name);
            sb.append("Weight: "   weight);
            sb.append("Height: "   height);
            sb.append("BMI: "   BMI);
            sb.append("You need to lose "   weightDifference   " kgs to stay within normal range!");
            sb.append("");
            sb.append("RESULT: "   result   ".");

        }

        // Overweight
        if (BMI >= 27.90 && BMI <= 31.10) {

            result = "Overweight";
            weightDifference = weight - (Math.pow(height, 2) * 24.99);

            sb.append("BMI Calculator");
            sb.append("Date of diagnosis: "   diagnosisDate());
            sb.append("Name: "   name);
            sb.append("Weight: "   weight);
            sb.append("Height: "   height);
            sb.append("BMI: "   BMI);
            sb.append("You need to lose "   weightDifference   " kgs to stay within normal range!");
            sb.append("");
            sb.append("RESULT: "   result   ".");

        }

        // Obesity
        if (BMI >= 31.20) {

            result = "Obesity";
            weightDifference = weight - (Math.pow(height, 2) * 24.99);

            sb.append("BMI Calculator");
            sb.append("Date of diagnosis: "   diagnosisDate());
            sb.append("Name: "   name);
            sb.append("Weight: "   weight);
            sb.append("Height: "   height);
            sb.append("BMI: "   BMI);
            sb.append("You need to lose "   weightDifference   " kgs to stay within normal range!");
            sb.append("");
            sb.append("RESULT: "   result   ".");

        }

        return sb.toString();

    }

    // BMI calculation - FEMALE
    public String BMIFemale() {

        BMI = (weight / (Math.pow(height, 2)));

        double weightDifference;
        double getFatWeightQuantity;
        double loseWeightQuantity;

        StringBuilder sb = new StringBuilder();

        // Underweight
        if (BMI < 19.10) {

            result = "Underweight";
            weightDifference = (Math.pow(height, 2) * 18.50) - weight;

            sb.append("BMI Calculator");
            sb.append("Date of diagnosis: "   diagnosisDate());
            sb.append("Name: "   name);
            sb.append("Weight: "   weight);
            sb.append("Height: "   height);
            sb.append("BMI: "   BMI);
            sb.append("You need to fatten "   weightDifference   " kgs to stay within normal range!");
            sb.append("");
            sb.append("RESULT: "   result   ".");

        }

        // Ideal Weight
        if (BMI >= 19.10 && BMI <= 25.80) {

            result = "Ideal Weight";
            weightDifference = (Math.pow(height, 2) * 18.50) - weight;

            getFatWeightQuantity = (Math.pow(height, 2) * 24.99) - weight;
            loseWeightQuantity = weight - (Math.pow(height, 2) * 18.50);

            sb.append("BMI Calculator"   "\n");
            sb.append("Date of diagnosis: "   diagnosisDate());
            sb.append("Name: "   name);
            sb.append("Weight: "   weight);
            sb.append("Height: "   height);
            sb.append("BMI: "   BMI);
            sb.append("Your weight is ideal for your height!");
            sb.append("You can still gain "   getFatWeightQuantity   " or lose "   loseWeightQuantity
                      "kgs without leaving normality.");
            sb.append("");
            sb.append("RESULT: "   result   ".");

        }

        // Little Overweight
        if (BMI >= 25.90 && BMI <= 27.30) {

            result = "Overweight";
            weightDifference = weight - (Math.pow(height, 2) * 24.99);

            sb.append("BMI Calculator");
            sb.append("Date of diagnosis: "   diagnosisDate());
            sb.append("Name: "   name);
            sb.append("Weight: "   weight);
            sb.append("Height: "   height);
            sb.append("BMI: "   BMI);
            sb.append("You need to lose "   weightDifference   " kgs to stay within normal range!");
            sb.append("");
            sb.append("RESULT: "   result   ".");

        }

        // Overweight
        if (BMI >= 27.40 && BMI <= 32.30) {

            result = "Overweight";
            weightDifference = weight - (Math.pow(height, 2) * 24.99);

            sb.append("BMI Calculator");
            sb.append("Date of diagnosis: "   diagnosisDate());
            sb.append("Name: "   name);
            sb.append("Weight: "   weight);
            sb.append("Height: "   height);
            sb.append("BMI: "   BMI);
            sb.append("You need to lose "   weightDifference   " kgs to stay within normal range!");
            sb.append("");
            sb.append("RESULT: "   result   ".");

        }

        // Obesity
        if (BMI >= 32.40) {

            result = "Obesity";
            weightDifference = weight - (Math.pow(height, 2) * 24.99);

            sb.append("BMI Calculator");
            sb.append("Date of diagnosis: "   diagnosisDate());
            sb.append("Name: "   name);
            sb.append("Weight: "   weight);
            sb.append("Height: "   height);
            sb.append("BMI: "   BMI);
            sb.append("You need to lose "   weightDifference   " kgs to stay within normal range!");
            sb.append("");
            sb.append("RESULT: "   result   ".");

        }

        return sb.toString();
    }

}

And the main class (ui):

    private void buttonCalculateActionPerformed(java.awt.event.ActionEvent evt) {                                                
        

        if (gender == 0) {
            
            JOptionPane.showMessageDialog(null, "Choose an option (Male or Female)!");
            
        } else {
            
            String name = textFieldName.getText();
            double weight = Double.parseDouble(textFieldWeight.getText());
            double height = Double.parseDouble(textFieldHeight.getText());
            
            String diagnosisDate = p.diagnosisDate();
            
            person p = new person(name, weight, height, diagnosisDate, gender);
            
            if (p.getGender() == -1) {
                
                textAreaResult.append(p.BMIMale());
                
                
            } else if (p.getGender() == 1) {
                
                textAreaResult.append(p.BMIFemale());
                
            }
          
        }
        
    }                                               

(I'm showing only the part where I do the printing).

I can't do the code print each line of my StringBuilder, one under the other.

The result is this: Result

Do you see that the lines are printed glued to each other? How can I solve it? Print each line separately, one under the other?

Ps.: If it's missing info, you may ask to me more (i'm relatively new here...)

CodePudding user response:

Put a newline character \n at the end of every string for your append() calls, Without adding these the string is one continuous line.

CodePudding user response:

You'll need to append a line break at end of each line. Something like this

sb.append("Name: "   name   "\n");

CodePudding user response:

You could...

Make use of StringJoiner

    StringJoiner joiner = new StringJoiner("\n");

    // Underweight
    if (BMI < 20.70) {

        result = "UnderWeight";
        weightDifference = (Math.pow(height, 2) * 18.50) - weight;

        joiner.add("BMI Calculator");
        joiner.add("Date of diagnosis: "   diagnosisDate());
        joiner.add("Name: "   name);
        joiner.add("Weight: "   weight);
        joiner.add("Height: "   height);
        joiner.add("BMI: "   BMI);
        joiner.add("You need to fatten "   weightDifference   " to have a weight appropriate to your height");
        joiner.add("");
        joiner.add("RESULT: "   this.result   ".");

    }
  •  Tags:  
  • Related