Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将代码从C转换为Java_Java_C_Transform - Fatal编程技术网

将代码从C转换为Java

将代码从C转换为Java,java,c,transform,Java,C,Transform,大家好,有谁能帮我一下吗?我在将代码从C语言转换成Java语言时遇到了一些困难,有谁能轻松地做到这一点。我已经试过把它转换成Java,但每次都失败了,而且有很多错误。 如果有人能将代码转换成Java,我会非常感激,然后我会自己更正错误 代码本身就是一个愚蠢的解释器。 谢谢您的定义可能必须是const char。 您的机箱开关必须转换为 #include <stdio.h> #include <stdlib.h> #define ST_PARAMETROV

大家好,有谁能帮我一下吗?我在将代码从C语言转换成Java语言时遇到了一些困难,有谁能轻松地做到这一点。我已经试过把它转换成Java,但每次都失败了,而且有很多错误。 如果有人能将代码转换成Java,我会非常感激,然后我会自己更正错误

代码本身就是一个愚蠢的解释器。 谢谢

您的定义可能必须是const char。 您的机箱开关必须转换为

#include <stdio.h>
#include <stdlib.h>

#define ST_PARAMETROV        4          //stevilo vhodnih parametrov
#define VEL_SPOMINA          10000      //velikost spomina +-10000
#define VEL_PROGRAMA         10000      //največja velikost programa
#define DOVOLJENIH_UKAZOV    10000      //največje dovoljeno število ukazov

int main() {

    // \0 označuje konec programa
    char program[VEL_PROGRAMA] = ",.>,<<,->--->+++.<.<.\0";
    int programPointer = 0;

    char parametri[ST_PARAMETROV] = {20,30,40,50};
    int parametriPointer = 0;

    unsigned char spomin[VEL_SPOMINA*2] = {0};
    int spominPointer = VEL_SPOMINA;

    int stOklepajev;
    int stOpravljenihUkazov = 0;


    while(program[programPointer] != 0 && DOVOLJENIH_UKAZOV > stOpravljenihUkazov){
        switch(program[programPointer]){
            case '>':
                spominPointer ++;
            break;

            case '<':
                spominPointer --;
            break;

            case '+':
                spomin[spominPointer] ++;
            break;

            case '-':
                spomin[spominPointer] --;
            break;

            case '.':
                printf("%i\n",spomin[spominPointer]);
            break;

            case ',':
                //če je zmanka parametrov zapiše 0
                if(parametriPointer > ST_PARAMETROV-1)spomin[spominPointer] = 0;
                else spomin[spominPointer] = parametri[parametriPointer++];
            break;

            case '[':
                if(spomin[spominPointer] == 0){
                    stOklepajev = 1;
                    while(stOklepajev != 0){
                        programPointer ++;
                        if(program[programPointer] == ']'){
                            stOklepajev--;
                        }
                        if(program[programPointer] == '['){
                            stOklepajev++;
                        }
                    }
                }
                break;

            case ']':
            if(spomin[spominPointer] != 0){
                stOklepajev = 1;
                while(stOklepajev != 0){
                    programPointer--;
                    if(program[programPointer] == '['){
                        stOklepajev--;
                    }
                    if(program[programPointer] == ']'){
                        stOklepajev++;
                    }
                }
            }
            break;


        }
        programPointer ++;
        stOpravljenihUkazov++;
    }
    return 0;
}

之后应该相当简单。

所需的转换仅限于类和对象定义/初始化和返回:


您可以在这里发布您的Java尝试,这样我们就可以尝试并更正它。据我所知,这很容易改变。对,看起来不难做到,但如果你不尝试,我们就不会做你的家庭作业。英语变量名等之所以有意义是有原因的。
if
else if
else if
 ...
else
public class Brainfuck
{
    final static int
        ST_PARAMETROV     =     4,  //stevilo vhodnih parametrov
        VEL_SPOMINA       = 10000,  //velikost spomina +-10000
        VEL_PROGRAMA      = 10000,  //najve?ja velikost programa
        DOVOLJENIH_UKAZOV = 10000;  //najve?je dovoljeno ?tevilo ukazov

    public static void main(String[] argv)
    {
        // \0 ozna?uje konec programa
        char program[] = new char[VEL_PROGRAMA];
        char initialProgram[] = ",.>,<<,->--->+++.<.<.\0".toCharArray();
        System.arraycopy(initialProgram, 0, program, 0, initialProgram.length);
        int programPointer = 0;

        char parametri[] = {20, 30, 40, 50};
        int parametriPointer = 0;

        char spomin[] = new char[VEL_SPOMINA*2];
        int spominPointer = VEL_SPOMINA;

        int stOklepajev;
        int stOpravljenihUkazov = 0;

        while (program[programPointer] != 0
            && DOVOLJENIH_UKAZOV > stOpravljenihUkazov)
        {
            switch (program[programPointer])
            {

                case '>':
                    spominPointer++;
                break;

                case '<':
                    spominPointer--;
                break;

                case '+':
                    spomin[spominPointer]++;
                break;

                case '-':
                    spomin[spominPointer]--;
                break;

                case '.':
                    System.out.println((int)spomin[spominPointer]);
                break;

                case ',':
                    //?e je zmanka parametrov zapi?e 0
                    if (parametriPointer > ST_PARAMETROV-1)
                         spomin[spominPointer] = 0;
                    else spomin[spominPointer] = parametri[parametriPointer++];
                break;

                case '[':
                    if (spomin[spominPointer] == 0)
                    {
                        stOklepajev = 1;
                        while (stOklepajev != 0)
                        {
                            programPointer++;
                            if(program[programPointer] == ']') stOklepajev--;
                            if(program[programPointer] == '[') stOklepajev++;
                        }
                    }
                break;

                case ']':
                    if(spomin[spominPointer] != 0)
                    {
                        stOklepajev = 1;
                        while(stOklepajev != 0)
                        {
                            programPointer--;
                            if(program[programPointer] == '[') stOklepajev--;
                            if(program[programPointer] == ']') stOklepajev++;
                        }
                    }
                break;

            }
            programPointer++;
            stOpravljenihUkazov++;
        }
        System.exit(0);
    }
}