java写c代码 编写java代码( 二 )


machine
generated
*/
#include
jni.h
/*
Header
for
class
testdll
*/
#ifndef
_Included_testdll
#define
_Included_testdll
#ifdef
__cplusplus
extern
"C"
{
#endif
/*
*
Class:
testdll
*
Method:
get
*
Signature:
()I
*/
JNIEXPORT
jint
JNICALL
Java_testdll_get
(JNIEnv
*,
jclass);
/*
*
Class:
testdll
*
Method:
set
*
Signature:
(I)V
*/
JNIEXPORT
void
JNICALL
Java_testdll_set
(JNIEnv
*,
jclass,
jint);
#ifdef
__cplusplus
}
#endif
#endif
在具体实现的时候 , 我们只关心两个函数原型
JNIEXPORT
jint
JNICALL
Java_testdll_get
(JNIEnv
*,
jclass);

JNIEXPORT
void
JNICALL
Java_testdll_set
(JNIEnv
*,
jclass,
jint);
这里JNIEXPORT和JNICALL都是JNI的关键字,表示此函数是要被JNI调用的 。而jint是以JNI为中介使JAVA的int类型与本地的int沟通的一种类型,我们可以视而不见,就当做int使用 。函数的名称是JAVA_再加上java程序的package路径再加函数名组成的 。参数中,我们也只需要关心在JAVA程序中存在的参数 , 至于JNIEnv*和jclass我们一般没有必要去碰它 。
好,下面我们用testdll.cpp文件具体实现这两个函数:
#include
"testdll.h"
int
i
=
0;
JNIEXPORT
jint
JNICALL
Java_testdll_get
(JNIEnv
*,
jclass)
{
return
i;
}
JNIEXPORT
void
JNICALL
Java_testdll_set
(JNIEnv
*,
jclass,
jint
j)
{
i
=
j;
}
编译连接成库文件,本例是在WINDOWS下做的,生成的是DLL文件 。并且名称要与JAVA中需要调用的一致,这里就是goodluck.dll
把goodluck.dll拷贝到testdll.class的目录下,java
testdll运行它,就可以观察到结果了 。
用java改写下面的C程序亲,你写的排序有问题,举个例子:对4,3,1,5进行排序,用你的排序方法就是:先是把4赋给imin,接着扫描后面的数字,把遇到的第一个比4小的也就是3与之换位,但这并不是最小的(最小的是1),然后接着就开始从第二位做上述相同的操作,简言之,就是并没有把最小的放在了前面 。我叙述的可能有些乱,不知道你能不能看懂-- 。
我贴上我写好的,排序用的是简单的冒泡排序法
欢迎追问 ,希望能帮到你
import java.util.*;
public class ArraySort {
public static final int N = 3;
void sort (int[][] A){
int row, col, x;
for(row=0; rowN; row++) {
for(int i=0; iN; i++) {
for(col=0; colN-1; col++) {
if(A[row][col]A[row][col+1]) {
x = A[row][col];
A[row][col] = A[row][col+1];
A[row][col+1] = x;
}
}
}
}
}
【java写c代码 编写java代码】 public static void main(String[] args) {
ArraySort as = new ArraySort();
Scanner reader = new Scanner(System.in);
int[][] A = new int[N][N];
int i, j;
System.out.println("请输入" + N*N + "个整数:");
for (i=0;iN;i++){
for(j=0;jN;j++) {
A[i][j] = reader.nextInt();
}
}
System.out.println("对每行排序前的数组为:");
for (i=0;iN;i++){
for(j=0;jN;j++) {
System.out.print(A[i][j] + "");
}
System.out.println();
}
as.sort(A);
System.out.println("对每行排序后的数组为:");

推荐阅读