Java 如何使用一个数组链接到另一个数组?

Java 如何使用一个数组链接到另一个数组?,java,arrays,Java,Arrays,大家好,基本上我是10月份开始的Java新手,我在做ComScience。我需要帮助,请与以下将不胜感激 注意:我还没有真正地列出代码,可以说,我想在构建/注释等之前先让程序工作。UULIB是大学图书馆的名称 目标:找出成绩低于平均分的学生的姓名 这是我在下面用来尝试查找它的代码,但它跳过了第一个[0]数组号,只给了我一个名称 import uulib.*; public class Q3 { public static void main(String[] args) {

大家好,基本上我是10月份开始的Java新手,我在做ComScience。我需要帮助,请与以下将不胜感激

注意:我还没有真正地列出代码,可以说,我想在构建/注释等之前先让程序工作。UULIB是大学图书馆的名称

目标:找出成绩低于平均分的学生的姓名

这是我在下面用来尝试查找它的代码,但它跳过了第一个[0]数组号,只给了我一个名称

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.获得最高分的学生姓名您可能只想计算一次平均分,而不是在第二个循环的每次迭代中计算一次…谢谢,这很有效,谢谢大家