首页 > 解决方案 > 表java。没有数组

问题描述

我可以得到一些有关此代码的帮助吗?我不知道我的错误在哪里,可能在第二个。我需要将此数据打印为表格,但我的姓氏打印了 3 次。我哪里错了?

    import java.util.Scanner;
    public class BMI {
    
        public static void main(String[] args) {
    
        Scanner scanner = new Scanner(System.in);
    
        String first_name = null;
        int kg = 0 ;
        double height = 0;
        double bmi = 0;
    
        for(int i=0; i<3; i++) {
        System.out.print("NAME ");
        first_name=scanner.next();
        System.out.print("WEIGHT, kg");
        kg=scanner.nextInt();
        System.out.print("HEIGHT, m");
        height=scanner.nextDouble();
        bmi= kg / (height * height);
    
        }
         
        System.out.printf("%s %20s %20s %20s", "NAME", "Weight", "Height", "BMI");
        System.out.println();
        
        for(int i=0; i<3; i++) {
        System.out.printf("%-10s %12d %21.2f %22.2f",first_name,kg,height,bmi);
        System.out.println();
        
        }
        
    } 

}

标签: java

解决方案


问题是,第一个 for 循环中的每个计算都会覆盖前一个计算的值。因此,只有最后一次计算的值会被打印出来。您需要将 3 个不同的数据块存储在不同的位置,例如使用数组:

import java.util.Scanner;
public class BMI {

    public static final int ENTRIES = 3;

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        String[] first_name = new String[ENTRIES];
        int[] kg = new int[ENTRIES];
        double[] height = new double[ENTRIES];
        double[] bmi = new double[ENTRIES];

        for(int i = 0; i < ENTRIES; i++) {
            System.out.print("NAME ");
            first_name[i] = scanner.next();
            System.out.print("WEIGHT, kg");
            kg[i] = scanner.nextInt();
            System.out.print("HEIGHT, m");
            height[i] = scanner.nextDouble();
            bmi[i] = kg[i] / (height[i] * height[i]);
        }
     
        System.out.printf("%s %20s %20s %20s", "NAME", "Weight", "Height", "BMI");
        System.out.println();
    
        for(int i = 0; i < ENTRIES; i++) {
            System.out.printf("%-10s %12d %21.2f %22.2f",first_name[i],kg[i],height[i],bmi[i]);
            System.out.println();
    
        }
    } 

}

您可能已经注意到,我还使用了一个常量来定义在一个地方使用的条目数。


推荐阅读