Что-то пошло не так с общим числом циклов - PullRequest
0 голосов
/ 07 января 2019

Приведенные ниже программы разделены на два класса (два разных файла), и они выполняют сканирование входных данных пользователя, включая имена, возраст, высоту и вес, и вычисляют ИМТ каждого входного значения. И я хотел показать количество циклов в конце цикла, которое указано в 28-й строке 7 января, но каким-то образом отображается умноженное число пользовательского ввода. Что не так с кодом? И как я мог это исправить? Пожалуйста, сообщите.

import java.util.Scanner;

class Jan7 {
    public static void main(String[] args) {  
        System.out.print("Type a loop number: ");
        Scanner scannerNum = new Scanner(System.in);
        int num = scannerNum.nextInt();
        int total = 0;
        for (int i = 0; i < num; i++) {

            Scanner scanner = new Scanner(System.in);
            System.out.print("Tell us your first name: ");
            String scanFN = scanner.next();
            System.out.print("Tell us yout last name: ");
            String scanLN = scanner.next();
            System.out.print("Tell us yout age: ");
            int scanAge = scanner.nextInt();
            System.out.print("Tell us yout hegiht: ");
            double scanH = scanner.nextDouble();
            System.out.print("Tell us yout weight: ");
            double scanW = scanner.nextDouble();
            Jan7Person person = new Jan7Person(scanFN, scanLN, scanAge, scanH, scanW);
            person.printData();

            total += num;

        }
        System.out.println(total); //28th line
    }
}

class Jan7Person {
    public static int count = 0;

    public String firstName;
    public String lastName;
    public int age;
    public double height;
    public double weight;

    Jan7Person(String firstName, String lastName, int age, double height, double weight) {
        Jan7Person.count++;

        this.firstName = firstName;
        this.lastName = lastName;
        this.age = age;
        this.height = height;
        this.weight = weight;
    }

    public String fullName() {
        return this.firstName + " " + this.lastName;
    }

    public double bmi() {
        return this.weight / this.height / this.height;
    }

    public void printData() {
        System.out.println("Your name is " + this.fullName() + ".");
        System.out.println("Your age is " + this.age + ".");
        System.out.println("Your BMI is " + Math.round(this.bmi()) + ".");
    }



}

Ответы [ 3 ]

0 голосов
/ 07 января 2019

Я, возможно, не понимаю, что вы действительно хотите, но если вы хотите, чтобы программа печатала номер цикла цикла, вы должны заменить

total += num;

с

total = num+1;
0 голосов
/ 07 января 2019

Не знаю, правильно ли я понял, но если вы хотите показать текущий номер цикла, в котором вы находитесь, просто используйте i цикла или i + 1, если вы не хотите иметь ноль.

total = i;
0 голосов
/ 07 января 2019

Суть вашего кода:

int num = scannerNum.nextInt();
int total = 0;
for (int i = 0; i < num; i++) {
    total += num;
}
System.out.println(total);

Который явно печатает квадрат num.

То, что вам нужно, кажется, уже сделано в person.printData();.

Если вы хотите создать структуру для печати всех данных person, используйте Array или List.

...