⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qnmatrixcommand.java

📁 基于j2me的高等代数计算工具
💻 JAVA
字号:
package edu.neu.aatk.command.qnjz;

import java.io.IOException;

import javax.microedition.lcdui.Alert;
import javax.microedition.lcdui.AlertType;
import javax.microedition.lcdui.Image;

import edu.neu.aatk.Calculator;
import edu.neu.aatk.canvas.AlertCanvas;
import edu.neu.aatk.canvas.InputMatrixCanvas;
import edu.neu.aatk.canvas.InputXYCanvas;
import edu.neu.aatk.command.AlertCommand;
import edu.neu.aatk.command.KeyCommand;
import edu.neu.aatk.command.pdjzknx.PdXYCommand;

public class QnMatrixCommand implements KeyCommand {

	private InputMatrixCanvas c;
	
	public QnMatrixCommand(InputMatrixCanvas c) {
		this.c = c;
	}
	
	public void keyPressed(int keyCode) {
		if(keyCode <= 57 && keyCode >= 48) {
			c.numberPressed = true;
			c.keyCode = keyCode;
	    	c.repaint();
	    	c.serviceRepaints();
		}
		
		switch(keyCode) {
			case -8: //clear
				c.mtbs[c.xFocus][c.yFocus].delete();
		    	c.repaint();
		    	c.serviceRepaints();
		    	break;
			case -7: //rightkey
				c.rightKeyClicked = true;
		    	c.repaint();
		    	c.serviceRepaints();
				break;
			case -6:
				c.leftKeyClicked = true;
		    	c.repaint();
		    	c.serviceRepaints();
				break;
			case -1: // up
				if(--c.xFocus < 0){
					c.xFocus += c.xValue;
				}
		    	c.repaint();
		    	c.serviceRepaints();
				break;
			case -2: // down
				c.xFocus = ( c.xFocus + 1 ) % c.xValue;
		    	c.repaint();
		    	c.serviceRepaints();
				break; 
			case -3: // left
				if(--c.yFocus < 0){
					c.yFocus += c.yValue;
				}
		    	c.repaint();
		    	c.serviceRepaints();
				break;
			case -4: // right
				c.yFocus = ( c.yFocus + 1 ) % c.yValue;
		    	c.repaint();
		    	c.serviceRepaints();
				break; 
		}
	}
	
	public void keyReleased(int keyCode) {
		if(keyCode <= 57 || keyCode >= 48)
			c.numberPressed = false;
		switch(keyCode) {
			case -7:
				c.rightKeyClicked = false;
		    	c.repaint();
		    	c.serviceRepaints();
		    	double matrix[][] = new double[c.xValue][c.yValue];
		    	for(int i = 0; i < c.xValue; i ++) {
		    		for(int j = 0; j < c.yValue; j ++) {
		    			matrix[i][j] = c.mtbs[i][j].getNumber();
		    		}
		    	}
		    	Calculator c = new Calculator(matrix);
		    	c.printMatrix();
		    	System.out.println(c.hlsqz());
		    	
				if(c.pdjzknx()) {
					Alert alert = new Alert(null);
					alert.setString(
							"该矩阵的逆矩阵为:\n" + c.qnjz());
					alert.setTimeout(Alert.FOREVER);
					alert.setType(AlertType.INFO);
					Image image = null;
					try {
						image = Image.createImage("/cmark.PNG");
					} catch (IOException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
					alert.setImage(image);
					this.c.aatk.display.setCurrent(alert);
				}
				else {
					Image image = null;
					try {
						image = Image.createImage("/cmark.PNG");
					} catch (IOException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
					
			    	AlertCanvas ac = new AlertCanvas("求逆矩阵", 
			    			this.c.aatk, 
			    			image, 
			    			"结果", 
			    			"该矩阵不可逆");
			    	
					InputXYCanvas ixyc = new InputXYCanvas("求逆矩阵",this.c.aatk);
					ixyc.setInfo("请输入矩阵的行数和列数");
					ixyc.setKeyCommand(new QnXYCommand(ixyc));
			    	
			    	ac.setKeyCommand(new AlertCommand(ixyc));
			    	this.c.aatk.display.setCurrent(ac);
				}
				break;
			case -6:
				this.c.leftKeyClicked = false;
				//清空状态
				this.c.repaint();
				this.c.serviceRepaints();
				InputXYCanvas ixyc = new InputXYCanvas("求逆矩阵",this.c.aatk);
				ixyc.setInfo("请输入矩阵的行数和列数");
				ixyc.setKeyCommand(new QnXYCommand(ixyc));
				this.c.aatk.display.setCurrent(ixyc);
				break;
		}
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -