【问题标题】:Java array is lost when exiting method退出方法时Java数组丢失
【发布时间】: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如何传递对象:stackoverflow.com/questions/7893492/…
  • 他通过他们就好了。他只是把它们倒在arraycopy
  • 这是一个 sn-p,假定声明。

标签: java arrays reference


【解决方案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
      

      【讨论】:

        猜你喜欢
        • 2014-10-03
        • 2021-07-12
        • 1970-01-01
        • 2022-11-30
        • 1970-01-01
        • 1970-01-01
        • 2015-01-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多