把C语言程序转换成Java

把C语言程序转换成Java,第1张

package dis;

import javaio;

import javamath;

public class dis

{

public static void main(String [] s) throws Exception

{

Float a,b,c;

double x2;

double x1;

Systemoutprintln("请输入a, b, c的值");

BufferedReader bReader=new BufferedReader(new InputStreamReader(Systemin));

a=FloatparseFloat(bReaderreadLine());

b=FloatparseFloat(bReaderreadLine());

c=FloatparseFloat(bReaderreadLine());

if (bb - 4ac <= 0)

Systemoutprintln("输入的系数不对,b2-4ac不大于0!程序退出!");

else

{

x1 = (-b + Mathsqrt(bb - 4ac))/2a;

x2 = (-b - Mathsqrt(bb - 4ac))/2a;

Systemoutprintln("x1 = "+ x1);

Systemoutprintln("x2 = "+x2);

}

return;

}

}

java编译完了生成的都是class字节码文件 无法脱离jre独立运行

你要想摆脱JVM运行java写出来的程序

需要转换到各系统的可执行文件 比如win32下的exe

有些软件是可以做到的

几种比较常用的把java程序转换成exe文件的方法。

一、exe4j

说明:exe4j可以将Jar文件制作成exe文件,但需jre支持,也可将Jar文件放在外面。

软件性质:共享软件

二、JBuilder

说明:新版本的JBuilder可以直接把工程制作成各系统的可执行文件,包括Windows系统。

软件性质:商业软件

三、NativeJ

说明:与exe4j功能类似。

软件性质:共享软件

四、Excelsior JET

说明:可以直接将Java类文件制作成exe文件,除AWT和Swing及第三方图形接口外可不需jre支持(Java50不行)。

软件性质:共享软件

五、jshrink

说明:可将Jar文件打包进exe文件。同时具有混淆功能(这才是它的主要功能)。

软件性质:共享软件

六、InstallAnywhere

说明:打包工具,对Java打包最好用。可打包成各 *** 作系统运行包。包括Windows系统。

软件性质:商业软件。

修改成Java后的代码:

public class Demo {

    public static int gcd(int a, int b, int c) {

        int min, i;

        if(a > b) {

            if(b > c) {

                min = c;

            } else {

                min = b;

            }

        } else {

            if(a > c) {

                min = c;

            } else {

                min = a;

            }

        }

        if(b > c) {

            if(c > a) {

                min = a;

            } else {

                min = c;

            }

        } else {

            if(b > a) {

                min = a;

            } else {

                min = b;

            }

        }

        if(a > c) {

            if(c > b) {

                min = b;

            } else {

                min = c;

            }

        } else {

            if(a > b) {

                min = b;

            } else {

                min = a;

            }

        }

        for(i=min; i>=1; i--) {

            if(a%i==0 && b%i==0 && c%i==0) {

                break;

            }

        }

        return i;

    }

    public static void main(String[] args) {

        int a = 1, b = 0, c = 0, i, k = 0, j = 0, m = 0, n = 0, z, y;

        while(a < 9) {

            b = 1;

            while(b < 9) {

                c = 1;

                while(c < 9) {

                    if(gcd(a,b,c) == 1) {

                        Systemoutprintln(a + ";" + b + ";" + c);

                        k++;

                        z = bb - 4ac;

                        if(z == 0) {

                            j++;

                        } else if(z > 0) {

                            m++;

                            for (y=1; y<z/2; y++) {

                                if (yy==z) {

                                    Systemoutprintln("解答是有理数。");

                                }

                            }

                        } else {

                            n++;

                        }

                    }

                    c++;

                }

                b++;

            }

            a++;

        }

        Systemoutprintln("N = " + k);

        Systemoutprintln("N2 = " + j);

        Systemoutprintln("N3 = " + m);

        Systemoutprintln("N4 = " + n);

        i = gcd(a, b, c);

    }

}

转化为字节码。

一般java文件编译过后会成为class文件,这个class文件就是字节码。

ava是一门面向对象的编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。

按照你的要求,C语言程序转换成的Java程序如下:

public class GGG {

 public static String calculateBillMac(String input_str){

  String str_buff_8 ="",str_buff_10 = "",str_return = "";

  long sum8_1=0,sum8_2=0,sum10_1=0,sum10_2=0;//分别存储八进制和十进制不同算法取值的合计

  

  for(int i=0 ;i < input_strlength();i++){//对输入字符串的每一个字节进行循环 

   str_buff_8+=IntegertoOctalString(input_strcharAt(i));//将ASCII码值转换成八进制字符串

   str_buff_10+=IntegertoString(input_strcharAt(i)); //将ASCII码值转换成十进制字符串   

  }

  for(int i=1;i<=str_buff_8length();i++){  

   sum8_1 += (str_buff_8charAt(i - 1) - '0')i;  

   sum8_2 += (str_buff_8charAt(str_buff_8length()-i) - '0')i; 

  }

   for(int i=1;i<=str_buff_10length();i++){  

    sum10_1 += (str_buff_10charAt(i - 1) - '0')i;  

    sum10_2 += (str_buff_10charAt(str_buff_10length() - i) - '0')i; 

    }

   str_return=""+sum8_1%10+sum8_2%10+sum10_1%10+sum10_2%10;

  return str_return;

 }

 public static void main(String[] args) {

   Systemoutprintln(calculateBillMac("abcdef"));

 }

}

运行结果:

2739

这个数据和C语言用字符串"abcdef"测试的结果相同

换下思路,C去调用数据库,然后保存到数据库阿java调用数据库得到C处理完存入数据库的数据就可以了

结构如图这样就少想不同语言间的交流,而且java和C的交互不是很好,貌似java貌似可以支持DLL,但是不方便

我试了一下,jbuilder生成的exe文件,在没有装jre的机器上不能运行,于是我就在该exe文件的同一位置提供一个jre目录,可是该exe文件不会去自动找这个jre,应该怎样做才能使exe文件找到这个jre,并运行起来呢?

先写一个bak,检查有没有jre,有的话就直接运行你的程序,没有的话,先安装再执行。

---------------------------------------------------------------

jbuilder有一个隐藏的技巧可以让你从可执行文件来启动java程序,(不出现console窗口我没有做到)。需要jbuilderx的bin目录下的这些文件:

jbuilderexe

jbuilderwexe (可选)

jbuilderconfig

jdkconfig

“jbuilderexe”是一个通用的可执行外壳文件,用以启动java程序,“jbuilderwexe”好像是javawexe一样,它把“jbuilderexe”包装起来,但是运行时候不显示那个console的窗口。使用这些文件的关键是文件名。“jbuilderexe”查找一个文件叫“jbuilderconfig”的配置文件,里面包含了运行java程序的必须信息。同样的“jbuilderwexe”查找“jbuilderexe”来启动不带console窗口的java程序。如果把jbuilderexe重命名为“fooexe”,那“fooexe”将去寻找“fooconfig”配置文件,同样“jbuilderwexe”被重命名为“foowexe”,它会去寻找“fooexe”文件。

说到这里,聪明的读者应该猜到怎样利用jbuilderexe来启动应用程序了。只要把jbuilderexe,jbuilerwexe,jbuilderconfig改名成相应的文件名,在jbuilderconfig里面指定主类和类路径,就能够通过执行jbuilderexe(或者被改名后的exe文件)来启动java应用程序了。

在\jbuilderx\bin\目录下,后把jbuilderexe,jbuilderconfig,jdkconfig四个文件拷贝到某目录下,然后打开jbuilderconfig文件,作相应的修改:

在jbuilderconfig里面找到下面两行

# start jbuilder using the its main class

mainclass comborlandjbuilderjbuilder ----修改主类为自己希望的类

config里面可以识别的命令可以在jbuilder/bin目录下的config_readmetxt里面找到详细说明。

然后修改jdkconfig里面的javapath相对的路径,例如原来是

javapath /jdk13/bin/java ----修改主类为自己打包的jre路径(可以使相对路径,如/jre)

最后将jbuilderexe,jbuilderconfig修改成所需要的文件名,例如fooexe和fooconfig文件。

下面的小技巧可能更有趣,将jar文件打包进入exe文件!

将jar包附加到jbuilderexe后面去,执行过程:

copy /b \jbuilderexe+hellojar fooexe

一个含jar包的exe文件得到了!

这个过程的大致原理是:exe文件的重要信息都在文件头部,所以把乱七八糟的东西放exe文件尾部是不要紧的;而jar/zip文件的重要信息是在文件尾部的,这样它们两不相干,能够容易的被执行。

以上就是关于把C语言程序转换成Java全部的内容,包括:把C语言程序转换成Java、C语言编程可以实现用命令提示符打开Java程序吗、怎样把一下的C语言程序改成java程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9735213.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存