java - 表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();
}
}
}
解决方案
问题是,第一个 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();
}
}
}
您可能已经注意到,我还使用了一个常量来定义在一个地方使用的条目数。
推荐阅读
- cordova - 无法在浏览器 Ionic Cordova 中构建和添加平台
- azure - ST_DISTANCE 返回什么单位?
- python - 是否可以在 Python 中动态地为内置的 Python 对象添加属性?
- c - 如何将 4 个无符号字符数组元素合并为一个十六进制值?
- jenkins - 如何获取 Jenkins 中所有宏的列表?
- python - 绘制具有重叠轮廓的每个 df 列的直方图
- azure - Azure AD B2C - 使用电子邮件或手机注册/登录
- node.js - 我应该如何在 NodeJS 中存储文件
- python - 为什么我在运行代码时可以看到 pip list sklearn 但在 Jupyter 中看不到?
- dialogflow-es - 如何格式化 DialogFlow 中 Facebook Messenger 响应的 @sys.date 和 @sys.time?