java语言中的Lisp列表

java语言中的Lisp列表,java,Java,我曾经尝试过编写这段代码,但似乎没有什么作用,我对lisp列表的概念有点陌生,因此我不太明白我应该做什么,不管怎样,这里是我尝试过的: import java.util.*; public class removNum{ public static void main(String[] args){ Scanner in = new Scanner(System.in); System.out.println("Enter a list

我曾经尝试过编写这段代码,但似乎没有什么作用,我对lisp列表的概念有点陌生,因此我不太明白我应该做什么,不管怎样,这里是我尝试过的:

    import java.util.*;
    public class removNum{
      public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        System.out.println("Enter a list (of integers): ");
        String str = in.nextLine();
        LispList<Integer> list = parseIntLispList(str);
        System.out.println("The list you entered is:");
        System.out.println(list);
        System.out.println("Enter an integer:");
        list = removePos(list);
        System.out.println(list); 
     }
     public static LispList<Integer> parseIntLispList(String str){
       String line = str.trim();
       String contents = line.substring(1,line.length()-1).trim();
       if(contents.length()==0)
          return LispList.empty();
       String[] nums = contents.split(",");
       LispList<Integer> list = LispList.empty();
       for(int i=nums.length-1; i>=0; i--){
          String num = nums[i].trim();
          list = list.cons(Integer.parseInt(num));
       }
       return list;
     }
     public static LispList removePos(LispList list, int n){
        if(0==n){
         return list.getTail();
        }
       else{
         return new LispList(list.getHead(),removePos(list.getTail(),n-1));
       }
     }
  }
import java.util.*;
公共类删除{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(系统输入);
System.out.println(“输入(整数)列表):”;
字符串str=in.nextLine();
LispList=parseIntLispList(str);
System.out.println(“您输入的列表是:”);
系统输出打印项次(列表);
System.out.println(“输入一个整数:”);
列表=移除位置(列表);
系统输出打印项次(列表);
}
公共静态LispList parseIntLispList(字符串str){
字符串行=str.trim();
字符串内容=line.substring(1,line.length()-1.trim();
如果(contents.length()==0)
返回LispList.empty();
字符串[]nums=contents.split(“,”);
LispList list=LispList.empty();
对于(int i=nums.length-1;i>=0;i--){
字符串num=nums[i].trim();
list=list.cons(Integer.parseInt(num));
}
退货清单;
}
公共静态LispList removePos(LispList,int n){
如果(0==n){
return list.getTail();
}
否则{
返回新的LispList(list.getHead(),removePos(list.getTail(),n-1));
}
}
}
基本上,我要做的是编写一个递归方法,它接受一个列表和一个整数x,并删除列表中x位置的整数,例如,如果列表是[2,5,6,40,8,9,45],整数是2,那么该方法应该返回[2,5,40,8,9,45],这样位置2的整数就从列表中删除了


我不希望有人为我写解决方案,但如果能朝着正确的方向推动一下,我将不胜感激。提前谢谢。


我不知道您正在使用的
LispList
类是否实现了
java.util.List
接口,但如果实现了,您可能会查看
索引和
子列表
方法,如所述。

您的示例与您对尝试执行的操作的描述不匹配。“删除位置x处的整数”,但第40个位置没有整数-第40个位置在第4个位置-在您的示例中,除了删除整数外,您还删除了列表的其余部分。哪一个是对的?不知道你说的“它没什么用”是什么意思。它到底做错了什么?很难说,因为我不熟悉您使用的
LispList
类。也许你可以在这里发布
cons
方法的JavaDoc,因为这是我认为你可能弄错的部分。@David Wallace我的意思是它没有多大作用,因为我似乎无法运行它,它给了我一个错误“类removNum中的方法removePos不能应用于给定的类型”;它突出显示了行“list=removePos(list)“在我的代码中。@moonshadow抱歉,我的意思是它应该只删除该位置的整数,而不删除列表中的任何其他内容。这是因为您编写的方法
removePos
有两个参数。但是在编译器突出显示的行中,您只传递了一个参数。