为什么会发生这种错误[JAVA]

时间:2015-12-01 04:45:10

标签: java

此代码:

import java.util.*;

public class Fix 
{   
   int Search(int arr[], int x,int n)
    {
        for (int i = 0; i < n; i++)
          if (arr[i] == x)
             return i;
        return 0;
    }

    void Func(int in[], int pre[], int n)
    {
        int root=Search(in,pre[0],n); 

         if (root != 0)
                Func(in,pre+1, root); //error 

           if (root != n-1)
             Func(in+root+1, pre+root+1, n-root-1); //error

       System.out.print(pre[0]+" ");
    }
 }

错误点是:

  

Func(in,pre + 1,root);

  

Func(在+ root + 1,pre + root + 1,n-root-1);

为什么会这样?在C ++中,没有发生此错误。

enter image description here

1 个答案:

答案 0 :(得分:0)

Java不是C ++。因此,您无法使用C ++的语法在Java中完成任务。

在Java中,您不能在数组和int上使用+。所以pre + 1会失败。此外,将数组递增1没有任何意义。

第二个错误基本上是一样的,将数组增加1 毫无意义。

我想你想把数组指针加一,我是对的吗?如果你想这样做,使用其他语言!我们在Java中没有指针!他们只是不存在!在Java中既没有指针也没有goto,因为Sun可能认为它们是PURE EVIL。

有一个(坏)解决方法。使用C#! C#有这个不安全的关键字可以创建一个不安全的上下文:

unsafe {

}

在不安全的上下文中,您可以使用指针stackalloc以及更多“不安全”的东西。但是,不安全的上下文在C#中非常罕见,除非必须使用它们,否则不要使用它们!