十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
给
创新互联主营迎泽网站建设的网络公司,主营网站建设方案,APP应用开发,迎泽h5小程序制作搭建,迎泽网站营销推广欢迎迎泽等地区企业咨询
文本框
加上onchange
监听,监听事件里取得文本框里的值,然后判断此输入的数字是否为100的整数倍,不是就弹出对话框,是就不作任何处理
至于判断是否为100整数倍,就用取得的值 %
100,判断结果是否为0,是的话就是对的,反正就是错的
要在java中调用c语言的库,需要使用Java提供了JNI。
举例说明
在c语言中定义一个 void sayHello()函数(打印Hello World);然后在Java中调用这个函数显示Hello Word.
现在分别从Java和C语言两部分说明:
1. Java 部分
首先定义一个HelloNative,在其中申明sayHello函数,函数要申明为Native 类型的.如下:
public class HelloNative {
public native void sayHello();
}
编译这个类,生成class文件:
javac HelloWorld.java
利用javah生成需要的h文件
javah HelloNative
生成的 h文件大概如下:
/* DO NOT EDIT THIS FILE - it is machine generated */
#include jni.h
/* Header for class HelloNative */
#ifndef _Included_HelloNative
#define _Included_HelloNative
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: HelloNative
* Method: sayHello
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_HelloNative_sayHello
(JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif
可以看一下上面自动生成的程序,程序include了jni.h,这个头文件在 $JAVA_HOME下的include文件夹下. 还可以发现生成的函数名是在之前的函数名前面加上了Java_HelloNative。
2. C语言部分
根据上面生成的h文件编写相应的代码实现,建立一个 HelloNative.cpp用来实现显示Hello World的函数.如下:
#include stdio.h
#include "HelloNative.h"
JNIEXPORT void JNICALL Java_HelloNative_sayHello(JNIEnv *, jobject)
{
printf("Hello World!\n");
}
代码编写完成之后,我们再用gcc编译成库文件,命令如下;
gcc -fPIC -I/usr/lib/jvm/java-7-openjdk-i386/include -I/usr/lib/jvm/java-7-openjdk-i386/include/linux -shared -o libHelloNative.so HelloNative.cpp
这样就会在当前目录下生成一个libHelloNative.so的库文件.这时需要的库已经生成,在C语言下的工作已经完成了.
接下来需要在Java中编写一个程序测试一下.在程序前,需要将我们的库载入进去.载入的方法是调用Java的 System.loadLibrary("HelloNative");
public class TestNative
{
static {
try {
System.loadLibrary("HelloNative");
}
catch(UnsatisfiedLinkError e) {
System.out.println( "Cannot load hello library:\n " + e.toString() );
}
}
public static void main(String[] args) {
HelloNative test = new HelloNative();
test.sayHello();
}
}
但是再编译后,运行的时候,问题又出现了.
Cannot load hello library:
java.lang.UnsatisfiedLinkError: no HelloNative in java.library.path
Exception in thread "main" java.lang.UnsatisfiedLinkError: HelloNative.sayHello()V
at HelloNative.sayHello(Native Method)
at TestNative.main(TestNative.java:13)
载入库失败,但是库明明就是放在当前文件夹下的,怎么会载入失败呢?
用System.getProperty("java.library.path")查看,发现java.library.path中并不u存在当前的目录.主要有以下的几个解决办法:
1) 将生成的库复制到java.library.path有的路径中去,当然这样不是很好
2) 设置环境变量export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH ,将当前的目录加入到LD_LIBRARY_PATH中
3) 设置java 的选项,将当前的目录加入到其中 .java -Djava.library.path=. $LD_LIBRARY_PATH
这样之后程序就能够成功的运行了.可以看见显示的"Hello World!"了
java.math.BigDecimal
是java.math包中提供的类,用来对超过16位有效位的数进行精确的运算。
new BigDecimal(entitySymbol.decimalPoint).setScale(0, RoundingMode.HALF_UP).intValue();
.setScale(0, RoundingMode.HALF_UP);//第一个参数是:保留多少位小数,第二个是四舍五入。
.intValue();//是将BigDecimal转为Int类型。
EG:
BigDecimal.setScale();//用于格式化小数点
setScale(1);//表示保留以为小数,默认用四舍五入方式
setScale(1,BigDecimal.ROUND_DOWN);//直接删除多余的小数位,如2.35会变成2.3
setScale(1,BigDecimal.ROUND_UP);//进位处理,2.35变成2.4
setScale(1,BigDecimal.ROUND_HALF_UP);//四舍五入,2.35变成2.4
setScaler(1,BigDecimal.ROUND_HALF_DOWN);//四舍五入,2.35变成2.3,如果是5则向下舍
Java程序:
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Exercise12_10 extends JFrame {
private static final long serialVersionUID = 1L;
private CanvasPanel pnlCanvas = null;
public Exercise12_10(){
super("Exercise12_10");
pnlCanvas = new CanvasPanel();
this.add(pnlCanvas);
this.setSize(250, 250);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new Exercise12_10();
}
}
class CanvasPanel extends JPanel{
private static final long serialVersionUID = 1L;
public void paint(Graphics g){
int W = this.getWidth();
int H = this.getHeight();
int i, j;
int width = W / 8;
int height = H / 8;
int x, y;
for(i=0; i9; i++){
for(j=0; j8; j++){
x = j * width;
y = i * height;
if((i+j)%2 == 0){//画矩形
g.drawRect(x, y, width, height);
}
else{//填充矩形
g.fillRect(x, y, width, height);
}
}
}
}
}
运行结果如图所示:
import java.util.Scanner;
import demo.ui.MainShell;
import demo.ui.PublicStatic;
public class DemoApp {
public static int getScanner() {
int input = 0;
try {
Scanner scanner = new Scanner(System.in);
input = scanner.nextInt();
} catch (Exception e) {
System.out.println("\t\t请重新输入");
return getScanner();
}
return input;
}
public static void main(String[] args) {
System.out.println("\t\t\t欢迎使用系统");
System.out.println("\t\t***********************");
System.out.println("\t\t\t1、客户信息管理");
System.out.println("\t\t\t2、购物结算");
System.out.println("\t\t\t3、真情回馈");
System.out.println("\t\t\t4、注销");
System.out.println("\t\t***********************");
while(true) {
int input = getScanner();
switch (input) {
case 1:
System.out.println("\t\t\t1、客户信息管理");
break;
case 2:
System.out.println("\t\t\t2、购物结算");
break;
case 3:
System.out.println("\t\t\t3、真情回馈");
break;
case 4:
System.out.println("\t\t\t4、注销");
break;
default:
System.out.println("\t\t请重新输入");
break;
}
if(input == 4) {
break;
}
}
}
}
在左侧工作空间空白处右键点击新建Java项目(Project) 比如说项目名字为aaa
然后在里面的src处点右键新建一个包(backpack) 然后再在包那再点击右键
新建一个类(Class) 右侧就会出现对应的项目 然后就可以在里面写Java程序了