我必须仅使用一个三维数组将值输入数组。在一个阵列中,对重量进行范围检查,以后必须打印。但是,由于某些原因,所有打印输入的if条件都保持不变:
测试数据: 性别女 姓名:吉赛尔 身高:165 体重:53
性别:男 姓名:亚当 身高:178 体重74
错误的输出:
女吉赛尔170 53“你的体重正常” 男亚当178 74“你的体重正常”
它应该输出: 女吉赛尔170 53“您的体重正常” 男性亚当178 74“你肥胖”
我意识到目前该程序没有意义,但这是我的要求,我试图在最近10个小时内解决。我不喜欢代码,但建议如何解决这个问题。谢谢
final int PGENDER = 2, PNAME = 2, PWEIGHT = 2, PHEIGHT = 2;
String weightDesc = null;
String [] gender = new String[PGENDER],
name = new String[PNAME],
height= new String[PHEIGHT];
int [] weight = new int[PWEIGHT];
int weightScale = 0;
for( int i=0; i < gender.length;i++) {
System.out.println("Enter your gender");
gender[i] = s.nextLine();
}
for(int i=0; i < name.length;i++) {
System.out.println("Enter your name");
name[i] = s.nextLine();
}
for( int i=0; i < height.length;i++) {
System.out.println("Enter your height");
height[i] = s.nextLine();
}
for(int i=0; i< weight.length; i++) {
System.out.println("Enter your weight");
weight[i] = s.nextInt();
weightScale = weight[i];
if (weightScale <= 55){
weightDesc = "Your weight is normal";
}
else if ( weightScale > 56 && weightScale < 64){
weightDesc = "You're over weight";
}
else if (weightScale > 65 && weightScale < 72){
weightDesc = "You're obese";
}
}
for(int i = 0; i< gender.length;i++) {
System.out.println(gender[i] + " "+ name[i]+ " " + height[i] + "" + weight[i]+ " " + weightDesc);
}
答案 0 :(得分:0)
您只有一个weightDesc
变量,因此在循环中您正在更新同一变量。
请像其他变量一样考虑使用weightDesc
数组。
但是
实际上,您做的这种方式不好,最好设计一个包含所有变量然后具有这些对象的数组/列表的类。
也
为什么要重复这些值
final int PGENDER = 2, PNAME = 2, PWEIGHT = 2, PHEIGHT = 2;
这只会使您的代码难以理解,为什么不可以
final int arraySize = 2;
建议方式
for( int i=0; i < arraySize; i++) {
System.out.println("Enter your gender");
String gender = s.nextLine();
System.out.println("Enter your name");
String name = s.nextLine();
System.out.println("Enter your height");
String height = s.nextLine();
MyClass obj = new MyClass (gender, name, height);
myArr [i] = obj;
}
// now loop and print