A. java與mathematica

其實這是很簡單的問題。
在Mathematica中提供了許多介面與外部程序交流信息,其中JLink就是專門針對Java而做的一個介面。通過JLink,你可以完成在Java中調用Mathematica的功能,也可以完成在Mathematica中調用Java的功能。從你的描述中,你應該多看看第一個功能方面的教程。教程的位置在幫助菜單中Virtual Book的最後一個選項中的JLink子選項中。

在JLink包中,實際上就是定義了一些類,這些類提供一些方法讓你訪問Mathematica。說白了,這個訪問指的就是將一些要計算的表達式作為參數放到類的方法中就完成了傳遞信息的過程,接著這個定義好的方法會打開你機器上的mathematica,然後執行計算,接著將結果返回給Java程序。這時你把這個值賦給這個變數。這樣就完成了一個java與mathematica的交互過程。

下面,我深入地介紹下JLink包。

在JLink中,有兩個最重要的interface叫MathLink和KernelLink。KernelLink繼承自MathLink。所以你一般只需要使用KernelLink這個介面。

為了完成交互過程,你需要首先獲得一個KernelLink的對象。這里獲得的方法採用工廠模式:MathLinkFactory.createKernelLink(argv).在這里argv中包含了你安裝的mathematica的目錄地址。給你一個argv的範例:"-linkmode launch -linkname 'c:\\program files\\wolfram research\\mathematica\\7.0\\mathkernel.exe' "。你將這個東西修改下使之符合你的計算機,然後放到argv所在的位置中即可完成獲得KernelLink對象的過程。

下面在介紹下mathematica在Java環境中是如何以類的形式組織起來的:

在包中定義了一個Expr類來表示Mathmatica的Expression。你應該知道,Mathmatica中一切都是Expression。所以在Java中,你可以將得到的信息和要傳遞的信息都封裝為Expr類的一個對象。從KernelLink中讀取信息,可以調用getExpr()方法得到Expr對象,然後可以調用這個Expr類提供的多個方法進行想要的操作。這些方法和你在Mathematica中遇到的基本相同,都是那裡面的函數名,只不過改為以小寫字母開頭的方法而已。像KernelLink中寫東西也很簡單,構建Expr對象,然後將它作為參數傳遞給相應的方法。

在包中定義了一個MathLinkException,用來表示交互過程中出現的所有異常。一般Link的方法都會拋出異常,所以你要將這些語句用try,catch結構圍起來。

在包中定義了一個PacketListener,一般你不需要用到。你只需在傳遞信息給Mathematica後,調用waitForAnswer()方法即可。但如果你將來想對傳回來的信息做些操作的話,就要用到這個。你有興趣的話自己看吧,我只是提一下。

有了以上的概念後,我現在介紹些比較常用的方法:

put()方法:你可以在()中寫入int, double,string,或者任意一個類的對象,這表示你將把這個東西傳遞給Mathematica。
如果你想使用Mathematica的函數,可以使用putFunction (String functionName, int argus).

get()方法:從Mathematica得到答案後,你需要顯示調用get類方法獲得結果。對於每一個特殊的類型都對以有一個get方法。
想獲得Expr類型可以使用以下方法:
public Expr getExpr() throws MathLinkException;

最後給你一個范常式序:

import com.wolfram.jlink.*;
import java.awt.*;
import java.awt.event.*;

public class GraphicsApp extends Frame {

static GraphicsApp app;
static KernelLink ml;

MathCanvas mathCanvas;
TextArea inputTextArea;
Button evalButton;
Checkbox useFEButton;
Checkbox graphicsButton;
Checkbox typesetButton;

public static void main(String[] argv) {

try {

ml = MathLinkFactory.createKernelLink("-linkmode launch -linkname 'c:\\program files\\wolfram research\\mathematica\\7.0\\mathkernel'");
ml.discardAnswer();
} catch (MathLinkException e) {
System.out.println("An error occurred connecting to the kernel.");
if (ml != null)
ml.close();
return;
}
app = new GraphicsApp();
}

public GraphicsApp() {

setLayout(null);
setTitle("Graphics App");
mathCanvas = new MathCanvas(ml);
add(mathCanvas);
mathCanvas.setBackground(Color.white);
inputTextArea = new TextArea("", 2, 40, TextArea.SCROLLBARS_VERTICAL_ONLY);
add(inputTextArea);
evalButton = new Button("Evaluate");
add(evalButton);
evalButton.addActionListener(new BnAdptr());
useFEButton = new Checkbox("Use front end", false);
CheckboxGroup cg = new CheckboxGroup();
graphicsButton = new Checkbox("Show graphics output", true, cg);
typesetButton = new Checkbox("Show typeset result", false, cg);
add(useFEButton);
add(graphicsButton);
add(typesetButton);

setSize(300, 400);
setLocation(100,100);
mathCanvas.setBounds(10, 25, 280, 240);
inputTextArea.setBounds(10, 270, 210, 60);
evalButton.setBounds(230, 290, 60, 30);
graphicsButton.setBounds(20, 340, 160, 20);
typesetButton.setBounds(20, 365, 160, 20);
useFEButton.setBounds(180, 340, 100, 20);

addWindowListener(new WnAdptr());
setBackground(Color.lightGray);
setResizable(false);

// Although this code would automatically be called in
// evaluateToImage or evaluateToTypeset, it can cause the
// front end window to come in front of this Java window.
// Thus, it is best to get it out of the way at the start
// and call toFront to put this window back in front.
// KernelLink.PACKAGE_CONTEXT is just "JLink`", but it is
// preferable to use this symbolic constant instead of
// hard-coding the package context.
ml.evaluateToInputForm("Needs[\"" + KernelLink.PACKAGE_CONTEXT + "\"]", 0);
ml.evaluateToInputForm("ConnectToFrontEnd[]", 0);

setVisible(true);
toFront();
}

class BnAdptr implements ActionListener {
public void actionPerformed(ActionEvent e) {
mathCanvas.setImageType(
graphicsButton.getState() ? MathCanvas.GRAPHICS : MathCanvas.TYPESET);
mathCanvas.setUsesFE(useFEButton.getState());
mathCanvas.setMathCommand(inputTextArea.getText());
}
}

class WnAdptr extends WindowAdapter {
public void windowClosing(WindowEvent event) {
if (ml != null) {
// Because we used the front end, it is important
// to call CloseFrontEnd[] before closing the link.
// Counterintuitively, this is not because we want
// to force the front end to quit, but because we
// _don't_ want to do this if the user has begun
// working in the front end session we started.
// CloseFrontEnd knows how to politely disengage
// from the front end if necessary. The need for
// this will go away in future releases of
// Mathematica.
ml.evaluateToInputForm("CloseFrontEnd[]", 0);
ml.close();
}
dispose();
System.exit(0);
}
}
}

B. java編程

public class Employee{
private String empno;
private String name;
private float base;
private float change;
public void setEmpno(String empno){this.empno = empno;}
public void setName(String name){this.name=name;}
public void setBase(float base){this.base = base;}
public void setChange(float change){this.change = change;}
public String getEmpno(){return empno;}
public String getName(){return name;}
public float getBase(){return base;}
public float getChange(){return change;}

public Employee(){}//無參構造方法
public Employee(String empno,String name,float base,float changePercent){
this.name = name;this.empno = empno;this.base = base;this.change = base*changePercent;
}//有參構造方法
public float getTot(){return base+change;}//計算總額的方法
}
public class Test{
public static void main(String args[]){
Employee e = new Employee("MLND-33","趙明",2000,0.1);//在構造器中賦值
System.out.println(e.getEmpno() +" : "+e.getName()+" : "+e.getBase()+" : "+e.getChange());
System.out.println(e.getTot());
}
}

C. java怎麼調用MLLib

1. 環境准備 Eclipse 請不要使用最新的 Neon(4.6) ,太多Bug了。 還是使用最新的 Mars(4.5) 系列吧 JDK 版本8.x (Linux推薦Oracle, 沒有測試過OpenJDK) 因為只是用Java,因此無需安裝Scala及其相應的插件

D. MTML JSP 前端 java

<style>
*{
margin: 0px;
padding: 0px;
}
</style>

E. java的安裝與環境變數的配置

還是我來吧,這個問題我起先也遇到啦,但是看了視頻教程之後了,簡直太容易解決啦
方法如下:其實你寫的文件放到哪都沒問題,但是前提的 : 比如你寫的文件保存在 D:\java;下,那麼請你把你設置的環境變數中的classthpath變數的值改為D:\java;.
請注意最後的那個分號和點號最好加上,那麼只要你的文件保存D盤的根目錄中就可以運行。

F. java 中出現Unknown tag (ml).哪裡錯了 請幫忙點出

你的contentType寫錯了,應該是contentType="text/html; charset=UTF-8"

G. java 程序

Book.java-------------------------------
public class Book {
String title;
int pageNum;
String type;

public Book(String title,int pageNum){
this.pageNum=pageNum;
this.type="計算機";
this.title=title;
}
public Book(String title,int pageNum,String type){
this.title=title;
this.pageNum=pageNum;
this.type=type;
}
public void detail(){
System.out.println("名稱:"+title+",頁數:"+pageNum+",種類:"+type);
}

}
BookTest.java-------------------------------------------
public class BookTest {
public static void main(String[] args){
Book b1=new Book("think in java",980);
b1.detail();

Book b2=new Book("魯賓遜漂流記",1000,"人物傳記");
b2.detail();
}
}
MathLib.java--------------------------------------
public class MathLib {
public int add(int a,int b){
return a+b;
}

public String add(String a,String b){
return a+b;
}

public int jie(int a,int b){
return a-b;
}

public int chen(int a,int b){
return a*b;
}

public int chu(int a,int b){
return a/b;
}

public static void main(String[] args){
MathLib ml=new MathLib();
int a=6;
int b=3;
String aa="Hello ";
String bb="World!";
System.out.println("a+b的值:"+ml.add(a,b));
System.out.println("aa+bb的值:"+ml.add(aa,bb));
System.out.println("a-b的值:"+ml.jie(a,b));
System.out.println("a*b的值:"+ml.chen(a,b));
System.out.println("a/b的值:"+ml.chu(a,b));
}
}

程序不難,關鍵是樓主要注意語氣,不要搞得像我們幫你寫東西是我們的義務一樣。祝你好運!

H. java_ee_sdk-6u4-windows-ml.exe 和 java_ee_sdk-6u4-windows.exe有什麼區別 那個ml是什麼意思

ml,multi-language 多語言版包括簡體中文,另一個可能只有英文。

I. java 這是什麼意思 private float mLumValue = 1F

數字後面
加F代表是float類型
加D代表是double類型
1F就是1
0F就是0