扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
import java.awt.Button;//使用java.awt包提供的Button(按钮)
成都创新互联是专业的南溪网站建设公司,南溪接单;提供成都网站制作、网站设计,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行南溪网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
import java.awt.Frame;//使用java.awt包提供的容器frame(带标题框)
import java.awt.Label;//使用java.awt包提供的Lable控件
import java.awt.Panel;//使用java.awt包提供的容器panel(面板)
import java.awt.TextField;//使用java.awt包内的TextField类
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class denglu implements ActionListener {
denglu() {
Panel p1, p2, p3;
TextField tName, tPassword;
Frame f;
//框架组件
f = new Frame("学生信息管理系统");
//设置横轴 纵轴 宽 高
f.setBounds(100, 100, 300, 200);
//设置默认布局为BorderLayout
f.setLayout(null);
p1 = new Panel();
p2 = new Panel();
p3 = new Panel();
//新建文本标签组件
Label I1 = new Label("学号:");
Label I2 = new Label("密码:");
//建立文本框组件 列的值是8
tName = new TextField(8);
tPassword = new TextField(8);
//输出的密码用*表示
tPassword.setEchoChar('*');
//建立按钮组件
Button b1 = new Button("登陆");
Button b2 = new Button("注册");
//添加当前框架监听事件
b2.addActionListener(this);
//同上
p1.setBounds(60, 40, 180, 30);
p2.setBounds(60, 80, 180, 30);
p3.setBounds(60, 120, 180, 40);
//将文本框,按钮等组件加入到面板上
p1.add(I1);
p1.add(tName);
p2.add(I2);
p2.add(tPassword);
p3.add(b1);
p3.add(b2);
//将面板添加到frame框架上去
f.add(p1);
f.add(p2);
f.add(p3);
//框架可见
f.setVisible(true);
}
public static void main(String args[]) {
new denglu();
}
public void actionPerformed(ActionEvent arg0) {
//new zhuce();
}
}
/*这个相当详细了.
程序也不算太难.而且给老师看的时候效果比较好.因为有图形化界面,又实现一个比较实用的功能.老师会比较高兴的.
建立一个文件名为Change.java就可以编译了*/
/*
* 这个程序实现输入身高算出标准体重,输入体重,算出身高的功能
*/
import java.awt.*; //导入相关类包,这才样使用相应awt图形界面的类
import java.awt.event.*;//同上
public class Change extends Frame { //定义一个类Change, 父类是Frame(图形界面的)
Button b = new Button("互查"); //创建一个按钮的对象b,显示为"互查"
Label l1 = new Label("身高(cm)");//创建一个lable.显示身高
Label l2 = new Label("体重(kg)");//创建一个lable 显示体重
double heigth, weigth; //定义变量
double x, y; //定义变量
TextField tf1 = new TextField(null, 10);//添加Text框
TextField tf2 = new TextField(null, 10);//添加Text框
public Change() {//类的构造函数,完成初始化
super("互查表");//创建窗口,标题为互查表
setLayout(new FlowLayout(FlowLayout.LEFT));//设置布局
add(l1);//把lable 身高放到window里
add(tf1);//把Text 框 放到窗口上
add(l2); //把lable 体重放到window里
add(tf2);//Test放到窗口里
add(b);//把button放到窗口上
pack();//自动放到窗口里排列上边的组件
setVisible(true);//可以让用户看到窗口
addWindowListener(new WindowAdapter() {//如果按 X, 关闭窗口
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
b.addActionListener(new ButtonListener());//添加button监听函数
}
class ButtonListener implements ActionListener {//实现click button时功能操作
public void actionPerformed(ActionEvent e) {//当click调用
if (tf1.getText()!=null) {//检查tf1 test 是否为空
try {//取异常
x = Double.parseDouble(tf1.getText());//字符转为double型
weigth = (x - 100) * 0.9;//算重量
tf2.setText("" + weigth);//显示重量
} catch (NumberFormatException ex) {
tf1.setText("");//如果输入不是数字,设为空
}
}
if (tf1.getText().equals("")==true){//tf1是否为空
y = Double.parseDouble(tf2.getText());//把tf2里的文本转为double 型 的
heigth = y / 0.9 + 100; //算身高根据重量
tf1.setText("" + heigth);}//显示身高
}
}
public static void main(String[] args) {//主函数,程序入口
new Change(); //建立类Change的对象,并调用他的构造函数Change().显示窗口
}
}
这个是给你看的注释版:
import java.util.LinkedList;
import java.util.Scanner;
public class Test6 {
int[][] array;
int m = 0, n = 0;
LinkedListString quere = new LinkedListString();
public Test6() {
quere.add("r");
quere.add("d");
quere.add("l");
quere.add("u");
}//定义了一个List里面装了["u","l","d","r"]四个String类型的东西
//从后面的应用来,"u"代表的是up,这个程序做的是根据给定数字X,构建
//出一个一维二维长均为X的数组,数组中以顺时针的方式用数字1到X*X进行填充
//可以想象成蛇行的往里面盘绕.
//这里的"u"也就是从下往上填充的意思了,其他的就不用我说了吧,"l"=left,"d"=down,"r"=right
public void printTest6(int N) {
array = new int[N][N];
for (int i = 1; i = N * N; i++) {
array[m][n] = i;
indexControl(quere, N);
}//数组赋值执行完毕
//接下来打印出数组
for (int i = 0; i N; i++) { //N 行
for (int j = 0; j N; j++) { //N 列
System.out.print(array[i][j] + "\t");//输出二维数组 "\t"是一个tab键符号
}
//每打完一组二维的数据,加换行
System.out.println();//换行
System.out.println();//换行
}
}
private void indexControl(LinkedListString quere, int N) {
String method = quere.peek();
//调用peek()返回链表的头部节点,对于初始状态["u","l","d","r"]来说,返回的是"r"
if (method.equals("r")) {
//如果头部节点是"r",换句话说具体填充的时候就是从左往右先开始填充.
//这时候的填充操作,对于二维数组来说自然就是固定第一维不变,第二维递增了.
n++;//固定第一维不变,第二维做递增操作
if ((n == N - 1) || array[m][n + 1] != 0) {
//这种操作的停止条件是走到了数组的边缘,也就是n == N - 1,因为n是从0开始发番
//另一种终止条件就是找到了一个已经被赋值过了的位置.
quere.add(quere.poll());
//条件终止之后就应该换方向了.调用poll方法获得头节点,初始状态就是"r",
//然后poll方法还会把"r"从原始链表中删除,因此调用完poll之后原始链表应该变成了
//["u","l","d"],然后在调用add方法,把"r"追加到尾部,此时链表就变成["r","u","l","d"]
//下一步再取头就是"d"了,也就是开始往下走.
}
} else if (method.equals("d")) {
//这里,如果头节点是"d",也就是从上往下开始赋值了,
//这时候应该是保持第二维坐标不变,第一维坐标递增.
m++;//固定第二维不变,第一维做递增操作
if ((m == N - 1) || array[m + 1][n] != 0) {
//这种操作的停止条件是走到了数组的边缘,也就是m == N - 1,因为m是从0开始发番
//另一种终止条件就是找到了一个已经被赋值过了的位置.
quere.add(quere.poll());
//条件终止开始换方向,把"d"放在链表的尾部,"l"成了头
}
} else if (method.equals("l")) {
//这里,如果头节点是"l",也就是从右往左开始赋值了,
//这时候应该是保持第一维坐标不变,第二维坐标递减.
n--;//固定第一维不变,第二维做递减操
if ((n == 0) || array[m][n - 1] != 0) {
//这种操作的停止条件是走到了数组的边缘,也就是n == 0.
//另一种终止条件就是找到了一个已经被赋值过了的位置.
quere.add(quere.poll());
//条件终止开始换方向,把"l"放在链表的尾部,"u"成了头
}
} else {
//这里,如果头节点是"u",也就是从下往上开始赋值了,
//这时候应该是保持第二维坐标不变,第一维坐标递减.
m--;//固定第二维不变,第一维做递减操
if (array[m - 1][n] != 0) {
//终止条件就是找到了一个已经被赋值过了的位置.这里不把数组边界作为判断条件是因为,
//可以保证在执行到这个部分的时候,数组的上部边界已经全部有值.
quere.add(quere.poll());
//条件终止开始换方向,把"u"放在链表的尾部,"r"成了头
}
}
}
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);//将输入流交给scan对象
System.out.println("请输入矩形的大小:");
int num = scan.nextInt();//scan对象获得从控制台输入的东西
new Test6().printTest6(num);//根据输入的数值构建数组
}
}
另外,程序不够严密,有障害,输入不是大于1的正整数就会挂,下面是修正版:
package Date0906.Date0906_Test6;
import java.util.LinkedList;
import java.util.Scanner;
public class Test6_Up {
int[][] array;
int m = 0, n = 0;
LinkedListString quere = new LinkedListString();
public Test6_Up() {
quere.add("r");
quere.add("d");
quere.add("l");
quere.add("u");
}
public void printTest6(int N) {
array = new int[N][N];
for (int i = 1; i = N * N; i++) {
array[m][n] = i;
indexControl(quere, N);
}
for (int i = 0; i N; i++) { //N 行
for (int j = 0; j N; j++) { //N 列
System.out.print(array[i][j] + "\t");//输出二维数组
}
System.out.println();//换行
System.out.println();//换行
}
}
private void indexControl(LinkedListString quere, int N) {
String method = quere.peek();
if (method.equals("r")) {//从左往右写二维数组
n++;
if ((n == N - 1) || ( N !=1 array[m][n + 1] != 0 )) {
//如果N为1或者检索到边界,或者检索到已经被赋值的点,重置链表,换赋值方向
quere.add(quere.poll());
}
} else if (method.equals("d")) {//从上往下写二维数组
m++;
if ((m == N - 1) || ( N !=1 array[m + 1][n] != 0 )) {
//如果N为1或者检索到边界,或者检索到已经被赋值的点,重置链表,换赋值方向
quere.add(quere.poll());
}
} else if (method.equals("l")) {//从右往左写二维数组
n--;
if ((n == 0) || ( N !=1 array[m][n - 1] != 0 )) {
//如果N为1或者检索到边界,或者检索到已经被赋值的点,重置链表,换赋值方向
quere.add(quere.poll());
}
} else {//从下往上写二维数组
m--;
if (N !=1 array[m - 1][n] != 0) {
//如果N为1或者检索到已经被赋值的点,重置链表,换赋值方向
quere.add(quere.poll());
}
}
}
public static void main(String[] args) {
Scanner scan = null;
System.out.println("请输入矩形的大小:");
int num = 0;
while ( true ) {
scan = new Scanner(System.in);
//用try捕获异常,当输整数以外的内容时给提示和再次输入的机会.
try {
num = scan.nextInt();
} catch (Exception e) {
System.out.println("请输入正整数");
continue;
}
//如果发现输入的数字是非正数,则要求再次输入
if ( 0 = num ) {
System.out.println("请输入正整数");
continue;
}
break;
}
new Test6_Up().printTest6(num);
}
}
package org.baoquan.example;
public class TestException { // 类的定义
public TestException() { //无参数构造方法
}
boolean testEx() throws Exception{ //定义一个方法testEx,该方法声明抛出一个Exception异常
boolean ret = true; //定义一个布尔类型的变量,并赋值为true(真)
//这是try块的开始,说明该方法内可能会有异常发生,所以对于可能有异常发生的地方,如果用户想对该异常进行处理,就用try catch来包裹他
try{
ret = testEx1(); //这个地方就是异常可能发生的地方,在方法testEx中,我们调用了testEx1方法,这个方法可能会发生异常。所以我们要来对发生异常的时候系统如果处理这个异常来做一个说明。
}catch (Exception e){//catch语句只有发生异常的时候才有可能调用。所以如果系统没有发生异常,catch中的代码是永远无法运行的。
System.out.println("testEx, catch exception"); //当系统发生异常的时候,打印"testEx, catch exception"这句,并把ret赋值为false。并抛出该异常。这个异常就有调用这个方法的方法来处理。
ret = false;
throw e;
}finally{ //finally,是不管有无异常的发生,都会运行其中的代码。所以这其中多是处理系统资源回收的代码。
System.out.println("testEx, finally; return value="+ret);
return ret;
}
}
/**
* 一下的都是相同道理
* @return 该方法返回布尔类型
* @throws Exception
*/
boolean testEx1() throws Exception{
boolean ret = true; //定义一个变量ret,默认为true。
try{
ret = testEx2();
if (!ret){
return false;
}
System.out.println("testEx1, at the end of try");
return ret;
}catch (Exception e){
System.out.println("testEx1, catch exception");
ret = false;
throw e;
}
finally{
System.out.println("testEx1, finally; return value="+ret);
return ret;
}
}
boolean testEx2() throws Exception{
boolean ret = true;
try{
int b=12;
int c;
for (int i=2;i=-2;i--){
c=b/i;
System.out.println("i="+i);
}
return true;
}catch (Exception e){
System.out.println("testEx2, catch exception");
ret = false;
throw e;
}
finally{
System.out.println("testEx2, finally; return value="+ret);
return ret;
}
}
public static void main(String[] args) {
TestException testException1 = new TestException();
try{
testException1.testEx();
}catch(Exception e){
e.printStackTrace();
}
}
}
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流