「java源码欣赏」java源码编译
本篇文章给大家谈谈java源码欣赏,以及java源码编译对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
急!急!求java计算器源代码 最后能出如图这样的界面并能运行 急啊 好的翻倍追加分啊
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.Panel;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class CalculatorGUI {
private Frame f;
private Panel p1, p2;
private Button b0, b1, b2, b3, b4, b5, b6, b7, b8, b9;
private Button bPoint, bAdd, bDec, bMul, bDiv, bCal;
private TextField tf;
private String s, op;
private Calculator cal = new Calculator();
private boolean ifOp;
public CalculatorGUI() {
f = new Frame("Calculator");
p1 = new Panel();
p2 = new Panel();
b0 = new Button("0");
b1 = new Button("1");
b2 = new Button("2");
b3 = new Button("3");
b4 = new Button("4");
b5 = new Button("5");
b6 = new Button("6");
b7 = new Button("7");
b8 = new Button("8");
b9 = new Button("9");
bPoint = new Button(".");
bAdd = new Button("+");
bDec = new Button("-");
bMul = new Button("*");
bDiv = new Button("/");
bCal = new Button("=");
tf = new TextField(25);
tf.setEditable(false);
}
public void launchFrame() {
f.setSize(220, 160);
f.setResizable(false);
f.addWindowListener(new myWindowListener());
p1.setLayout(new FlowLayout(FlowLayout.CENTER));
p1.add(tf);
f.add(p1, BorderLayout.NORTH);
p2.setLayout(new GridLayout(4, 4));
b0.addActionListener(new setLabelText_ActionListener());
b1.addActionListener(new setLabelText_ActionListener());
b2.addActionListener(new setLabelText_ActionListener());
b3.addActionListener(new setLabelText_ActionListener());
b4.addActionListener(new setLabelText_ActionListener());
b5.addActionListener(new setLabelText_ActionListener());
b6.addActionListener(new setLabelText_ActionListener());
b7.addActionListener(new setLabelText_ActionListener());
b8.addActionListener(new setLabelText_ActionListener());
b9.addActionListener(new setLabelText_ActionListener());
bPoint.addActionListener(new setLabelText_ActionListener());
bAdd.addActionListener(new setOperator_ActionListener());
bDec.addActionListener(new setOperator_ActionListener());
bMul.addActionListener(new setOperator_ActionListener());
bDiv.addActionListener(new setOperator_ActionListener());
bCal.addActionListener(new setOperator_ActionListener());
p2.add(b7);
p2.add(b8);
p2.add(b9);
p2.add(bAdd);
p2.add(b4);
p2.add(b5);
p2.add(b6);
p2.add(bDec);
p2.add(b1);
p2.add(b2);
p2.add(b3);
p2.add(bMul);
p2.add(b0);
p2.add(bPoint);
p2.add(bCal);
p2.add(bDiv);
f.add(p2, BorderLayout.SOUTH);
f.setVisible(true);
}
public void setTextFieldText_Temp() {
if (tf.getText().length() 15
(tf.getText().indexOf(".") == -1 || !s.equals("."))) {
tf.setText(tf.getText() + s);
} else {
tf.setText((tf.getText() + s).substring(0, 15));
}
}
public void setTextFieldText() {
if (ifOp) {
ifOp = false;
tf.setText("");
setTextFieldText_Temp();
} else {
setTextFieldText_Temp();
}
}
public static void main(String[] args) {
CalculatorGUI calculator = new CalculatorGUI();
calculator.launchFrame();
}
class myWindowListener extends WindowAdapter {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}
class setLabelText_ActionListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
Button tempB = (Button) e.getSource();
s = tempB.getLabel();
setTextFieldText();
}
}
class setOperator_ActionListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
Button tempB = (Button) e.getSource();
op = tempB.getLabel();
if (op.equals("+")) {
tf.setText(cal.opAdd(tf.getText()));
ifOp = true;
} else if (op.equals("-")) {
tf.setText(cal.opSubtract(tf.getText()));
ifOp = true;
} else if (op.equals("*")) {
tf.setText(cal.opMultiply(tf.getText()));
ifOp = true;
} else if (op.equals("/")) {
tf.setText(cal.opDivide(tf.getText()));
ifOp = true;
} else if (op.equals("=")) {
tf.setText(cal.opEquals(tf.getText()));
ifOp = true;
}
}
}
}
class Calculator {
private String result = "0";
private int op = 0, add = 1, sub = 2, mul = 3, div = 4;
private double stringToDouble(String x) {
double y = Double.parseDouble(x);
return y;
}
private void operate(String x) {
double x1 = stringToDouble(x);
double y = stringToDouble(result);
switch (op) {
case 0:
result = x;
break;
case 1:
result = String.valueOf(y + x1);
break;
case 2:
result = String.valueOf(y - x1);
break;
case 3:
result = String.valueOf(y * x1);
break;
case 4:
if (x1 != 0) {
result = String.valueOf(y / x1);
} else {
result = "The divisor can't be zero!";
}
break;
}
}
public String opAdd(String x) {
operate(x);
op = add;
return result;
}
public String opSubtract(String x) {
operate(x);
op = sub;
return result;
}
public String opMultiply(String x) {
operate(x);
op = mul;
return result;
}
public String opDivide(String x) {
operate(x);
op = div;
return result;
}
public String opEquals(String x) {
operate(x);
op = 0;
return result;
}
public void opClean() {
op = 0;
result = "0";
}
}
求java实现矩阵图上任意两点的最短路径源码
我用的是递归调用方法,有个小问题就是在打印步数的时候是返向的,原因是就是程序不断的调用自己,到最后判断基值位准退出调用。这才开始从栈里取出方法进行执行的原因。
代码欣赏:
public static int step = 1;
public static StringBuffer printStep = new StringBuffer();
public static int[][] maze ={{1,1,1,1,1,1,1,1,1,1,1},
{1,0,1,0,1,0,0,0,0,0,1 },
{1,0,1,0,0,0,1,0,1,1,1 },
{1,0,0,0,1,0,1,0,0,0,1 },
{1,0,1,1,0,0,1,0,0,1,1 },// 0代表可以通过,1代表不可通过
{1,0,1,0,1,1,0,1,0,0,1 },
{1,0,0,0,0,0,0,0,1,0,1 },
{1,0,1,0,1,0,1,0,1,0,1 },
{1,0,0,1,0,0,1,0,1,0,1 },
{1,1,1,1,1,1,1,1,1,1,1 } };
public static void main(String[] args) {
int i, j; //循环记数变量
Sample.way(1, 1);//二维数组起始值从下标1,1开始
System.out.println("起点从坐标 x = 1, y = 1开始");
System.out.println("终点坐标是 x = 8, y = 9结束");
System.out.println("这是迷宫图表");
System.out.println(" 0 1 2 3 4 5 6 7 8 9 10");
System.out.println(" +---+---+---+---+---+---+---+---+---+---+---+---+---+");
for(i = 0; i 10; i++){
System.out.print(" " + i + "‖");
for(j = 0; j 11; j++)
System.out.print("-" + maze[i][j] + "-‖");
System.out.println("");
System.out.println(" +---+---+---+---+---+---+---+---+---+---+---+---+---+");
}
//打印显示步数
System.out.print(printStep.toString());
}
public static boolean way(int x, int y){
if(maze[8][9] == 2)//代表递归终止条件(也就是当走出出口时标记为 2)
return true;
else{
if(maze[y][x] == 0){
maze[y][x] = 2;
/*
* 下面if判断条件代表当前坐标为基点,
* 根据判断对当前位置进行递归调用:如:
* 往上、往右上、往右、往右下、往下、
* 往左下、往左、往左上的坐标是否可走,
* 判断是否可走的返回条件是:
* 2代表可通过、1代表不能通过、3表示已经走过,但是未能走通。
*/
if(way(x, y - 1)){
printStep.append("第 " + step + " 步的所走的位置是 x = " + x + " y = " + y + "\n");
step++;
return true;
}else if(way(x + 1, y - 1)){
printStep.append("第 " + step + " 步的所走的位置是 x = " + x + " y = " + y + "\n");
step++;
return true;
}else if(way(x + 1 , y)){
printStep.append("第 " + step + " 步的所走的位置是 x = " + x + " y = " + y + "\n");
step++;
return true;
}else if(way(x + 1, y + 1)){
printStep.append("第 " + step + " 步的所走的位置是 x = " + x + " y = " + y + "\n");
step++;
return true;
}else if(way(x, y + 1)){
printStep.append("第 " + step + " 步的所走的位置是 x = " + x + " y = " + y + "\n");
step++;
return true;
}else if(way(x - 1, y + 1)){
printStep.append("第 " + step + " 步的所走的位置是 x = " + x + " y = " + y + "\n");
step++;
return true;
}else if(way(x - 1, y)){
printStep.append("第 " + step + " 步的所走的位置是 x = " + x + " y = " + y + "\n");
step++;
return true;
}else if(way(x - 1, y - 1)){
printStep.append("第 " + step + " 步的所走的位置是 x = " + x + " y = " + y + "\n");
step++;
return true;
}else{
maze[y][x] = 3;
return false;
}
}else
return false;
}
}
复制代码前需要楼主自己创建个 类
Sample.way(1, 1);这句代码是我的类的静态调用,改下XXXXX.way(1, 1);
XXXXX代表你创建的类。
下面是这个程序运行后的截图
JAVA源代码怎么看
如何看JAVA源代码的问题!!
我最近刚刚转为JAVA开发,因为以前一直做DELPHI,刚一接触JAVA,感觉好不适应,公司给了一个业务的源代码学习,可是东一个接口西一个继承看的我头好大,各位有什么好方法可以看的明白些呢,谢谢各位了!!!
画成UML图,
导成UML图~~
用集成环境的编辑工具:JB,eclipse,IntelliJ IDEA等.
如何导出成UML???
用什么工具导出???
JBuilder 有这个功能
但是还是建议自己来,先画类的继承关系,然后是类之间的通信.
了解了整体关系以后,再看具体代码的实现.......
先了解什么叫 面向对象
先从整体(框架)上了解你所看的东东
然后建立面向对象概念
然后。。。。。。。。
TOGETHER 和ROSE可以导。
没办法!
只能从基础来!
总结楼上的一些建议:
1、了解基本java语法;
2、面向对象思想;
3、最好了解UML语言;
4、稍稍熟悉一种IDE的使用方法。
第二点是最基本的,难以想象在不熟悉面向对象的基础上能够真正了解一个java程序的整体结构
推荐使用 Source Insight,看源码这个是最佳选择!十分方便!我现在就在用,哈哈
先打好基础吧
比较你不是从C++转过来的
关于java源码欣赏和java源码编译的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。