對於我的項目,我們必須使用Java來操縱某些LISP語句。其中一項任務是:將除第n個元素之外的所有元素添加到另一個ArrayList中
'((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);
也許玩弄你的incrementors自(NUM字元)在一次跳躍前進二是2組。你也必須加倍你的模數來補償。 – 2015-02-11 01:38:28
我的問題是每個字母都帶有一個數字。所以如果第n個元素是2,那麼我意味着我必須忽略2個索引。如果第n個元素是3,我不得不忽略3個索引。我試圖找出正確的邏輯,但我有麻煩@AlexPopov – OoOoOoOoOoO 2015-02-11 02:08:30