首页 > 解决方案 > 使用专用方法调整数组大小以扩大和缩小规模

问题描述

我对编码还很陌生,并且正在为我的班级作业而苦苦挣扎。该程序接受用户输入的数组大小,并提示用户一次输入每个值 1。数组大小从 3 开始,如果数组填充后需要更大,则创建一个 2 倍大小的新数组并将所有信息复制到其中。我能够弄清楚这部分,但我只是看不出我在缩小规模的部分做错了什么。复制信息后,我必须删除尾随零。我想我有正确的缩小方法,但我不知道我是否正确

import java.util.Scanner;

public class Lab6 {

    public static void main(String args[]) {
        int[] myarray = new int[3]; 
        int count = 0;
        int limit, limitcount = 1;

        Scanner kbd = new Scanner(System.in);
        System.out.print("How many values would you like to enter? ");
        limit = kbd.nextInt();

        while (limitcount <= limit) {
            System.out.println("Enter an integer value ");
            int input = kbd.nextInt();
            limitcount++; 
            if (count < myarray.length) {
                myarray[count] = input;
          
            }
            else {
                myarray = upsize(myarray); 
                myarray[count] = input; 
            }
            count++; 
        }
  
        myarray = downsize(myarray, count)
  
        printArray(myarray);
        System.out.println("The amount of values in the arrays that we care about is: " + count);
    }

static int[] upsize(int[] array) {
    int[] bigger = new int[array.length * 2];
        for (int i =0;i<array.length; i++) {
            bigger[i] = array[i];
        }
    return bigger;
}

static void printArray( int[] array ) {
    for ( int number : array ) {
        System.out.print( number + " ");
    }
    System.out.println();
}

static int[] downsize(int[] array,int count) {
    int[] smaller = new int[count];
    for (int i =0; i<count; i++) {
        smaller[i] = array[i];
        }
        return array; 
    }
}

标签: javaarrays

解决方案


因为你是新来的,所以给你一个完整的回应而不是评论,我不想用可能被误解的简洁来劝阻你。

  1. 不确定将代码粘贴到此处时发生了什么,您已经提供了所有内容,但格式很奇怪(“代码”位在顶部和底部缺少几行)。发布前可能需要仔细检查。发布后,我看到其他人已经编辑了你的代码来修复这个。

  2. 你少了一个分号。我不喜欢分发答案,所以我会让你找到它:) 如果你在 IDE 中运行你的代码,它应该已经为你标记了那个。如果你不是,为什么不呢???IntelliJ 是免费的、易于使用且非常有用。还有其他人更喜欢不同的人:) IDE 将帮助您快速发现各种有用的东西。

  3. 我现在已经运行了你的代码,你确实有问题!它在你的最终方法中,downsize(). 非常非常仔细地查看 return 语句;)您的问题表明您实际上不确定此方法是否正确,这让我想知道:您是否真的使用不同的输入运行此代码以查看您得到的结果?请这样做。

  4. 风格方面:方法之间的空白行将通过提供组件之间的视觉差距使代码更易于查看。请与将您的开头 { 与方法签名放在同一行,并在项目之间使用空格保持一致,例如,for (int i = 0; i < count; i++)而不是for (int i =0; i<count; i++). 编译器不在乎,但人类更容易看,只是让它看起来像你关心的那样。总是一件好事!

  5. 我认为你将一些工作分成更小的方法真是太棒了。严重地。对于额外的加分,请考虑如何将 while() 块移动到它自己的方法中,例如 private int[] getUserData(int numberOfItems, Scanner scanner)。没有这个,你的代码很棒,但是你学习编写小单元的次数越多,你对未来的自己就越有帮助。

  6. 你的班级有没有看过单元测试?相信我,如果不是这样,当您了解这一点时,您会意识到第 5 点的重要性。单元测试也将有助于解决上述第 3 点中的问题。

总的来说,它对我来说看起来很不错。继续!!!


推荐阅读