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