Java 如何使用一个数组链接到另一个数组?
大家好,基本上我是10月份开始的Java新手,我在做ComScience。我需要帮助,请与以下将不胜感激 注意:我还没有真正地列出代码,可以说,我想在构建/注释等之前先让程序工作。UULIB是大学图书馆的名称 目标:找出成绩低于平均分的学生的姓名 这是我在下面用来尝试查找它的代码,但它跳过了第一个[0]数组号,只给了我一个名称Java 如何使用一个数组链接到另一个数组?,java,arrays,Java,Arrays,大家好,基本上我是10月份开始的Java新手,我在做ComScience。我需要帮助,请与以下将不胜感激 注意:我还没有真正地列出代码,可以说,我想在构建/注释等之前先让程序工作。UULIB是大学图书馆的名称 目标:找出成绩低于平均分的学生的姓名 这是我在下面用来尝试查找它的代码,但它跳过了第一个[0]数组号,只给了我一个名称 import uulib.*; public class Q3 { public static void main(String[] args) {
import uulib.*;
public class Q3
{
public static void main(String[] args)
{
int class_number = Console.getInt("Enter how many students between 1-10");
while (class_number < 1 || class_number > 10)
class_number = Console.getInt("Enter how many students between 1-10");
System.out.println("");
String[] name = new String[class_number];
int[] score = new int[name.length];
for (int i=0; i<class_number; i=i+1)
{
name[i] = Console.getString("Enter Name");
score[i] = Console.getInt("Enter score");
if ( score[i] < average(score))
System.out.print(name[i] + " ");
}
System.out.println(" ");
System.out.println("Average mark = " + Num.format(average(score), 1 ));
System.out.println("Lowset mark = " +lowset(score) );
System.out.println("Highest mark = " +highestValue(score) );
System.out.println("Name of students with highest mark = " );
}
public static double average(int[] nums)
{
double total = 0;
for (int i=0; i<nums.length; i=i+1)
{
total = total + nums[i];
}
return total / nums.length;
}
public static int lowset(int[] nums)
{
int minimum = nums[0]; //sets the first to be the smallest
for (int i = 0; i < nums.length; i++) //goes through your array
{
if (nums[i] < minimum) //checks and replaces if necessary
{
minimum = nums[i];
}
}
return minimum;
}
private static int highestValue(int[] numbers)
{
int highest = numbers[0];
for (int i = 0; i < numbers.length; i++)
{
if (numbers[i] > highest)
{
highest = numbers[i];
}
}
return highest;
}
}
导入uulib.*;
公开课Q3
{
公共静态void main(字符串[]args)
{
int class_number=Console.getInt(“输入1-10之间的学生人数”);
而(类别号<1 | |类别号>10)
class_number=Console.getInt(“输入1-10之间的学生人数”);
System.out.println(“”);
字符串[]名称=新字符串[类别编号];
int[]分数=新int[name.length];
对于(inti=0;i在您的第一次迭代(i==0
)中,score[i]
将计算为false,因为实际上score[i]==average(score)
,这就是您没有打印出名字的原因
但是,您的整个逻辑是有缺陷的。您应该首先循环并要求用户输入数据,然后计算平均值,最后再次循环数据以确定哪个学生的分数低于计算的平均值。看起来您的程序需要做三件主要的事情
收集输入数据(从控制台)
计算平均值(以及您需要计算的任何其他值)。您的代码有最高值和最低值,但您的问题文本并不表示需要这些信息
输出结果
这里有一些代码可以帮助您改进代码的组织
public static void main(String[] args) {
collectInputData();
calculate();
outputResults();
}
如果你只记得答案中的一件事,请记住这一点。不要等到你的代码“正常”或“良好”时若要改进结构或注释!您可以通过改进结构和注释来改进代码。您正在检查第一次循环,这显然不会小于相同的循环。您应该在数组中填充所有等级后运行if语句检查,并对循环che执行相同的操作检查哪些分数低于平均值。你应该将for循环分成两个for循环,因为在收集所有分数之前,你无法计算平均值:
for (int i=0; i<class_number; i=i+1) {
name[i] = Console.getString("Enter Name");
score[i] = Console.getInt("Enter score");
}
for (int i=0; i < class_number; i++) {
if (score[i] < average(score))
System.out.print(name[i] + " ");
}
for(int i=0;可以说我“我还没有真正列出代码”——如果你不在乎,为什么我们要这么做呢?试着缩小你的代码范围,让大家更容易阅读,另一方面:人们对要求直接回答的家庭作业问题并不友好。谢谢你,是的,我必须输入数据和1。平均分数2.姓名低于平均分的学生人数3.最低分4.最高分5.获得最高分的学生姓名您可能只想计算一次平均分,而不是在第二个循环的每次迭代中计算一次…谢谢,这很有效,谢谢大家