gpt4 book ai didi

java - 程序布局 - 通过 System.in.read 创建适当大小的数组

转载 作者:行者123 更新时间:2023-12-01 15:02:04 26 4
gpt4 key购买 nike

以下内容显然非常不切实际,但我的讲师坚持教我们对编程有一个非常基本的理解。他给我们的练习是这样的:

仅使用 System.in.read、int、char 和循环,创建一个读取的方法 用户从命令行输入并返回一个与金额一样大的 char[] 输入的字符数。不要使用 System.arraycopy() 或其他库方法。

我一无所知。由于似乎无法缓冲 System.in.read 输入,因此在解析任何字符之前必须完美调整数组的大小。这到底是如何运作的?

最佳答案

create a method that reads user input from the command line and returns a char[]

再考虑一下,我假设您应该通过自己增长一个 char[] 数组来进行自己的输入缓冲。这应该就是提到 System.arraycopy() 的原因。

增长数组的工作原理如下

  • 创建一个比现有数组长 1 项的新数组。
  • 对于旧数组中的每个字符
    • 将字符从旧数组复制到新数组,保持位置不变
  • 用增长的数组替换旧数组。

如果将其与从输入流中读取所有字符的循环结合起来,您将得到以下内容,并且应该完成您的作业。

  • 从长度为 0 的数组开始
  • 当字符可从输入流获取时
    • 将数组增大
    • 将输入流中的字符放入数组的最后一个槽
  • 返回数组
<小时/>

甚至可以在没有循环和增长数组的情况下做到这一点。只需创建一个正确大小的新数组一次。

private static char[] readToCharArray(int length) throws IOException {
int read = System.in.read();
char[] result;
if (read == -1 || read == '\r' || read == '\n' ) {
result = new char[length];
} else {
result = readToCharArray(length + 1);
result[length] = (char) read;
}
return result;
}

char[] myArray = readToCharArray(0);

关于java - 程序布局 - 通过 System.in.read 创建适当大小的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13503631/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com