【发布时间】:2015-02-11 01:02:27
【问题描述】:
对于我的项目,我们必须使用 Java 来处理某些 LISP 措辞。给了其中一项任务:
'((4A)(1B)(2C)(2A)(1D)(4E)2)
最后的数字是“n”。任务是从表达式中删除每个第 n 个元素。例如,上面的表达式将计算为:
′((4A)(2C)(1D)2)
我现在的方法是将所有不在第 n 个索引处的元素添加到另一个数组中。我的错误是它将每个元素都添加到新数组中,使两个元素相同。
我的代码:
String input4=inData.nextLine();
length=input4.length();
String nString=input4.substring(length-2,length-1);
int n = Integer.parseInt(nString);
count=n;
String delete1=input4.replace("'(","");
String delete2=delete1.replace("(","");
final1=delete2.replace(")","");
length=final1.length();
for (int i=1;i<length;i++)
{
part=final1.substring(i-1,i);
list.add(part);
}
for(int i=0;i<=list.size();i++)
{
if(!(i%n==0))
{
delete.add(list.get(i-1));
delete.add(list.get(i));
}
else
{
}
}
System.out.print("\n"+list);
【问题讨论】:
-
也许可以和你的增量器一起玩,一次跳两个,因为 (num-char) 是一个 2 组。您还必须将模数加倍以进行补偿。
-
我的问题是每个字母都有一个数字。因此,如果第 n 个元素是 2,我的意思是我必须忽略 2 个索引。如果第 n 个元素是 3,我将不得不忽略 3 个索引。我试图找出正确的逻辑,但我遇到了麻烦@AlexPopov