C语言与java的爱恨情仇

为什么在C语言能运行的程序,改在java就报错了,动不了。
package cn.text;
import java.*;
import java.util.Scanner;
public class tt {

/**
 * @param args
 */
public static void ss(int n,boolean a[],int s,int arrry[]){
    int []arry=new int[10];
    if(n>s)
    for(int i=1;i<=arry.length;i++){
    System.out.println(arry[i]);
    }
    else{
        for(int i=1;i<=s;i++)
            if(!a[i]){
            a[i]=true;
            arry[n]=i;
            ss(n+1,a,s,arry);
            a[i]=false;
        
        }
    }
    
}
public static void main(String[] args) {
    // TODO Auto-generated method stub
    int n=new Scanner(System.in).nextInt();
    boolean[]a={false};
    int[]arry=new int[10];
    int s=1;
    ss(s,a,n,arry);

}

}

方法ss()中的 arrry参数没有调用,根据代码上下文推测,应该是arrry是在方法ss中被调用,所以把参数arrry改为arry;

然后main方法中的数组a是静态初始化的,这个数组长度是长度1了,所以后面可能会数组越界,可以把它定义为长度为10;

因为不知道你这个代码是求什么的,所以就随便修改一下,修改如下:

参考链接:

import java.*;
import java.util.Scanner;
public class tt {

/**
 * @param args
 */
public static void ss(int n,boolean a[],int s,int arry[]){
   // int []arry=new int[10];
    if(n>s)
    for(int i=0;i<arry.length;i++){
        System.out.print(arry[i]+" ");
    }
    else{
        for(int i=0;i<s;i++)
            if(!a[i]){
            a[i]=true;
            arry[n]=i;
            ss(n+1,a,s,arry);
            a[i]=false;
        
        }
    }
    
}
public static void main(String[] args) {
    // TODO Auto-generated method stub
    int n=new Scanner(System.in).nextInt();
   // boolean[]a=new boolean[10];
    // https://blog.csdn.net/weixin_45987729/article/details/124367110
    boolean[]a= {false};
   // System.out.println(a.length);
    int[]arry=new int[10];

    int s=1;
    ss(s,a,n,arry);
 
}
}

img

int arrry[]
这个java里面拷贝了一份,所以不会修改主程序的那个数组

参考GPT和自己的思路:

这段代码在Java中报错的原因,并不是因为C语言中可以运行而Java中不能运行。而是因为在Java中,数组的下标是从0开始的,而你的代码中却是从1开始的。所以,当数组越界时就会抛出异常。另外,在Java中,对于boolean类型的数组,也要在声明时指定数组大小,而不能简单地通过赋值一个元素来自动扩容。因此,你需要将代码中的一些语法错误和逻辑错误进行修改才能在Java中成功运行。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^