我试图做Java本地接口,这是使用gcc编译c文件和Java代码是
import java.util.Scanner;
class BMICalculator {
double weight, height;
native double BMIcalculate();
static {
System.loadLibrary("Calculate");
}
public static void main(String args[]){
Scanner input = new Scanner(System.in);
BMICalculator total = new BMICalculator();
System.out.printf("Enter your weight : ");
total.weight = input.nextDouble();
System.out.printf("Enter your height : ");
total.height = input.nextDouble();
System.out.println("Your BMI is " + total.BMIcalculate());
}
}
#include <jni.h>
#include <math.h>
JNIEXPORT jdouble JNICALL Java_BMICalculator_BMIcalculate(JNIEnv *env, jobject obj){
jdouble total, weight1, height1 ;
jfieldID fid1, fid2;
jclass cls = (*env)->GetObjectClass(env,obj);
fid1 = (*env)->GetFieldID(env,cls,"weight","D");
fid2 = (*env)->GetFieldID(env,cls,"height","D");
if((fid1 == NULL) || (fid2 == NULL)) return 0;
weight1 = (*env)->GetDoubleField(env,obj,fid1);
height1 = (*env)->GetDoubleField(env,obj,fid2);
weight1 = (*env)->GetIntField(env,obj,fid1);
height1 = (*env)->GetIntField(env,obj,fid2);
height1 = height1 / 100;
total = weight1 / ( height1 * height1 );
return total;
}
如何修复输出NaN
weight1 = (*env)->GetDoubleField(env,obj,fid1);
height1 = (*env)->GetDoubleField(env,obj,fid2);
weight1 = (*env)->GetIntField(env,obj,fid1);
height1 = (*env)->GetIntField(env,obj,fid2);
第二批线路在那里做什么?fid1
和fid2
是双字段的字段ID,因此应该如何读取它们。GetIntField
生成未指定的结果。只需删除第二批行。
注意:如果这只是自学JNI,干得好。如果这是因为您认为它会“更快”,不,不会的,JVM在热点发现这类代码方面非常出色。这只是很难阅读,而且速度慢得多(JNI桥接绝对不是免费的)。
我正在编程一个需要Hibernate技术的项目。我得到了堆栈痕迹,但我不知道如何修复它。有什么需要帮忙的吗? 这是我的堆栈跟踪,我得到了这两个错误: SLF4J:slf4j-api 1.6.x(或更高版本)与此绑定不兼容。SLF4J:您的绑定是1.5.5或更早版本。SLF4J:将绑定升级到1.6.x版本。或2.0.x 导入org.hibernate.hibernateException;导入org
问题内容: 我想我正在解决这个问题,但是遇到了另一个障碍,并且不知道如何解决它 此查询有什么问题- 只需获取通用的“您有一个错误”,它指向联接,但我不知道如何解决它。我想要对customer_address_entity进行联接,因为它具有我需要在其中一条select语句中使用的另一个唯一ID。 问题答案: 首先,您的代码如下所示: 很明显,您在FROM之前有JOIN。 其次,您有一个带有unic
我开始了一个新的项目,并把火基地云: 这个错误出现了: 警告:API的变体。getJavaCompile()已过时,已替换为“variant”。getJavaCompileProvider()。它将于2019年底拆除。有关详细信息,请参阅https://d.android.com/r/tools/task-configuration-avoidance.确定什么是调用变量。getJavaCompi
我发现了一个mysql创建表语法错误,希望有人能在我失去理智之前发现它。 错误1064(42000):您的SQL语法中有错误;查看与您的MySQL server版本相对应的手册,以了解在第2行“int not null auto_increment,Client_ID int not null,Start_Time varchar(5),star”附近使用的正确语法 mysql Ver 14.14
当我想将数据从数据库导出到excel文件时,我得到以下异常“java.lang.IllegalStateException:getOutputStream()已经被调用用于此响应”。 /****服务****/ /*错误*/