gpt4 book ai didi

java - 从键盘逐个字符读取消息并存储在最多 256 个字符的数组中

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

我带着另一个问题来到这里,因为我遇到了障碍并且无法弄清楚问题是什么..

我的问题:创建一个 256 个字符的数组,然后从键盘上一个字符一个字符地读取消息,并将它们存储在数组中(最多 256 个符号)。该方法应返回数组中存储的字符数。然后将该数组传递给另一个方法以打印一行中消息的每个单词。

我尝试的解决方案:

public static void main(String[] args){
char[] arrItem7 = new char[256];
readArray(arrItem7);
printOneInLine(arrItem7);
}

public static char[] getMsg(){
String myMessage;
System.out.print("Input Message: ");
Scanner input = new Scanner(System.in);
myMessage = input.nextLine();// Read a line of message
return myMessage.toCharArray();
}

public static char[] readArray(char[] arr){
arr = getMsg();
return arr;
}

public static void printOneInLine(char[] arr){
for(int i = 0; i < arr.length; i++){
if(arr[i] == 0){
System.out.print(" ");
}else{
System.out.print(arr[i]);
}
}
System.out.println();
}

程序提示输入,但不幸的是,打印出 NULL。将数组设置为我的消息方法时,我一定做错了什么。有人可以帮助我吗?过去 20 分钟我一直在绞尽脑汁..非常感谢

最佳答案

看看这个答案:Is java pass by reference or pass by value

简而言之,Java 是按值传递的。这意味着当您将数组传递到 readArray() 方法时,您实际上只是将对该数组的引用传递到其中。然后,当您将新数组分配给输入参数时,您将覆盖它指向的引用。您没有更改原始数组。所以main方法中的arrItem7仍然指向原来创建的数组。

正如您所发现的,这在您使用它的方式中不起作用。您可以完全删除 readArray() 并将 getMsg 的值直接分配给 arrItem7:

public static void main(String[] args){
char[] arrItem7 = getMsg();
printOneInLine(arrItem7);
}

关于java - 从键盘逐个字符读取消息并存储在最多 256 个字符的数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51095771/

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