退出方法时Java数组丢失

Posted

技术标签:

【中文标题】退出方法时Java数组丢失【英文标题】:Java array is lost when exiting method 【发布时间】:2011-12-20 21:06:02 【问题描述】:

我对 java 比较陌生,没有指针的引用传递让我有点困惑。我写了一个作业函数,要求我返回用户输入的长度,并将使用输入分配给传入的数组,当方法退出时,用户输入数组丢失,这是怎么回事。

public static int readArray(char[] intoArray)
    
        char[] capture = captureInputAsCharArray(); //User input comes back as char[]
        System.arraycopy(intoArray,0, capture, 0, capture.length);

        return capture.length;
    

public static main(String[] args)

        size = readArray(arrItem7);  // item 7
        System.out.println(size);
        printOneInLine(arrItem7);  // prints individual elements of array

【问题讨论】:

你在哪里声明 arrItem7? 看这篇文章了解Java如何传递对象:***.com/questions/7893492/… 他通过他们就好了。他只是把它们倒在arraycopy 这是一个 sn-p,假定声明。 【参考方案1】:

引用本身是按值传递的。在这种情况下,您应该返回数组 (capture) 本身而不是长度。

【讨论】:

【参考方案2】:

因为你有 System.arraycopy() 的参数向后。

http://download.oracle.com/javase/6/docs/api/java/lang/System.html

public static void arraycopy(Object src,
                             int srcPos,
                             Object dest,
                             int destPos,
                             int length)

交换intoArraycapture

System.arraycopy(capture,0, intoArray, 0, capture.length);

【讨论】:

【参考方案3】:

要做你想做的事(获取用户输入并返回它的大小),你可以这样做:

import java.util.*;


class Main
  public static void main(String argv[])
  
    Scanner sc = new Scanner(System.in);
    System.out.println("Enter something");
    String line = sc.nextLine();
    char [] my_array = line.toCharArray();
    System.out.println("You entered an input of length "+line.length());
  


它会给出这个:

$ java Main 
Enter something
Hello
You entered an input of length 5

【讨论】:

以上是关于退出方法时Java数组丢失的主要内容,如果未能解决你的问题,请参考以下文章

在java中怎么取出数组中的数据

java中,方法参数是基本类型和引用类型的区别

java short 数组转换 byte数组

java问题:500个孩子围成圈,从第一个开始报数,逢3退出,然后从下一个孩子继续开始报数,直到只剩下一个

如何用setData修改数组

如何在Java中处理一维数组的跳过输入