-2

我正在尝试将 PHP 脚本转换为 Java。但不知何故,我不让它工作..

<?php

$karten = array(12, 10, 8, 14, 9, 11, 13);

for ($i = 1; $i <= count($karten); $i++) {
    print_r($karten);
    echo '<br>';
    if ($karten[$i] > $Karten[$i - 1]) {
        for ($a = 0; $a < count($karten); $a++) {
            if ($karten[$a] > $karten[$i]) {
                //Karten vorne dran setzen
                $karte = $karten[$i];
                unset($karten[$i]);
                array_splice($karten, $a, 0, array($karte));
                break;
            }
        }
    }
}

?>

我们必须在学校使用 Eclipse,所以不是最新版本的 Java 这是我到目前为止得到的:

主.java:

import java.util.Arrays;


public class Main {

    /**
     * @param args
     */

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        KartenAlgo ka = new KartenAlgo();
        int[] stapel = new int[7];
        int[] sStapel = new int[stapel.length];
        stapel[0] = 12;
        stapel[1] = 10;
        stapel[2] = 8;
        stapel[3] = 14;
        stapel[4] = 9;
        stapel[5] = 11;
        stapel[6] = 13;
        sStapel = ka.sortiereKarten(stapel);
    }

}

算法.java:

import java.util.*;

public class KartenAlgo {

    public int[] sortiereKarten(int[] array) {

        int[] returnArr = new int[array.length];

        for (int i = 1; i < array.length; i++) {
            if (array[i] > array[i - 1]) {
                for (int a = 0; a < array.length; a++) {
                    if (array[a] > array[i]) {
                        int karte = array[i];
                        array = this.unset(array, i);
                        array = this.array_insert(array, a, karte);
                        break;
                    }
                }
            }
        }

        return returnArr;
    }

    private int[] unset(int[] array, int index) {
        int[] returnArr = new int[array.length];
        for (int i = 0; i < array.length; i++) {
            if (i != index) {
                if (i < index) {
                    returnArr[i] = array[i];
                } else if (i == array.length - 1) {
                    returnArr[i] = -1;
                } else {
                    returnArr[i] = array[i - 1];
                }
            }
        }

        return returnArr;
    }

    private int[] array_insert(int[] array, int pos, int insert) {
        int[] returnArr = new int[array.length];

        for (int i = 0; i < returnArr.length; i++) {
            if (i < pos) {
                returnArr[i] = array[i];
            } else if (i == pos) {
                returnArr[i] = insert;
            } else {
                returnArr[i] = array[i - 1];
            }
        }

        System.out.println(Arrays.toString(array));

        return returnArr;
    }
}

我试图在 Java 中重建 PHP 的未设置和 array_splice 的简单变体,但我没有让它工作。

4

1 回答 1

0

在 PHP 中取消设置是这样的:(取消设置删除/删除数组中的元素,你会得到更短的数组)

private static int[] unset(int[] arrIn, int index) 
{
    int i;

    // new array is shorter
    int[] arrOut = new int[arrIn.length-1];

    // copy element "before" arrIn[index]
    for(i = 0; i < index ; i++) {
        arrOut[i] = arrIn[i];
    }

    // copy element "after" arrIn[index]
    for(i = index; i < arrOut.length ; i++) {
        arrOut[i] = arrIn[i+1];
    }

    return arrOut;
}

array_insert 将元素插入数组,你会得到更长的数组。

private static int[] array_insert(int[] arrIn, int pos, int value) 
{   
    int i;

    // new array is longer
    int[] arrOut = new int[arrIn.length+1];

    // copy element "before" arrIn[pos]
    for(i = 0; i < pos ; i++) {
        arrOut[i] = arrIn[i];
    }

    // put element in arrOut[pos]
    arrOut[pos] = value;

    // copy element "from" arrIn[pos] "to" end of arrIn[]
    for(i = pos; i < arrIn.length ; i++) {
        arrOut[i+1] = arrIn[i];
    }

    return arrOut;
}
于 2013-06-07T11:06:00.160 回答