本文目录一览:
- 1、java新手汉诺塔问题最终的输出结果如下(问题规模为3),其中盘子的编号是汉诺塔问题中从上到下的顺序。
- 2、求一个汉诺塔的JAVA代码
- 3、java实现汉诺塔的代码,求注释,具体到每一行代码,急求,,,
- 4、JAVA汉诺塔
- 5、Java汉诺塔的问题
- 6、怎样用Java编写汉诺塔程序
java新手汉诺塔问题最终的输出结果如下(问题规模为3),其中盘子的编号是汉诺塔问题中从上到下的顺序。
try..catch用于捕获initProperties()和init()这两个方法执行时候的异常,至于initProperties()和init()这两个方法为何会出异常,就看你具体的业务逻辑了。
try中的代码块儿如果一旦出现异常则在catch中进行捕获,showMessageDialog是JOptionPane封装或者说提供的一个显示一个带有确定按钮的模态对话框的方法。
几个参数中
"Failed to init.\n" + ex 也就是第二个参数是消息框弹出消息的内容。
"BinaryRain 也就是第三个参数是消息框的标题。
JOptionPane.ERROR_MESSAGE 也就是第四个参数,是消息框的类型,表示错误提示,弹出来的消息框有个红色的叉叉标识,如JOptionPane.WARNING_MESSAGE,表示警告提示,弹出来的消息框有个叹号标识。
求一个汉诺塔的JAVA代码
public class Hannoi {
public static void main(String[] args) {
int nDisks = 3;
moveDish(nDisks, 'A', 'B', 'C');
}
private static void moveDish(int level, char from, char inter, char to) {
if (level == 1) {
System.out.println("从" + from + "移动盘子 " + level + " 号到" + to);
} else {
moveDish(level - 1, from, to, inter);
System.out.println("从" + from + "移动盘子 " + level + " 号到" + to);
moveDish(level - 1, inter, from, to);
}
}
}
java实现汉诺塔的代码,求注释,具体到每一行代码,急求,,,
这样应该可以了
如果还有那个地方不懂的,建议你研究下汉诺塔算法
import
java.io.BufferedReader;//引入IO包中的BufferedReader
import
java.io.IOException;//引入IO包中的IO异常处理
import
java.io.InputStreamReader;//引入IO包中的InputStreaReader
public
class
Hinoi
{
//主类
static
int
m=0;//定义移动的次数
//主程序入口--main方法
public
static
void
main(String[]
args)
{
//创建BufferedReader对象,InputStream输入流
BufferedReader
bf
=
new
BufferedReader(new
InputStreamReader(System.in));
System.out.println("请输入盘子的个数:");
try
{
int
sl
=
Integer.parseInt(bf.readLine().toString());//接收总盘子个数
toMove(sl,"A","B","C");//调用移动方法
A--C
}
catch
(NumberFormatException
e)
{捕获NumberFormatException异常
//
TODO
Auto-generated
catch
block
e.printStackTrace();//打印异常
}
catch
(IOException
e)
{//捕获IOException异常
//
TODO
Auto-generated
catch
block
e.printStackTrace();//打印异常
}
System.out.println("总共移动了:"+m+"
次数");//打印移动次数
}
//移动方法
private
static
void
toMove(int
sl,
String
one,
String
two,String
three)
{
if(sl==1){//如果只有一个盘子,则直接移动到C柱
System.out.println("盘子"+sl+"
从
"+one+"----"+three);
}else{//如果总盘数大于1,则递归调用移动方法
//把所有的数量为sl-1的盘子全部从A移到到B(C作为一个过渡),好提供一个最下面的位置给最大盘子到C;
toMove(sl-1,one,three,two);
System.out.println("盘子"+sl+"
从
"+one+"----"+three);
//把所有的剩余的盘子从B移动到C(A作为一个过渡)
toMove(sl-1,two,one,three);
}
m++;
}
}
JAVA汉诺塔
import java.awt.*;
public class TowerPoint //公共类TowerPoint
{
int x,y; //定义2个int类型的变量
boolean 有盘子; //定义一个boolean类型的变量
Disk 盘子=null; //初始化一个对象"盘子"并赋值为空
HannoiTower con=null; //初始化一个HannoiTower类的对象"con"并赋值为空
public TowerPoint(int x,int y,boolean boo) //构造函数,有3个参数,x,y,boo
{
this.x=x; //将参数赋给当前x
this.y=y; //将参数赋给当前y
有盘子=boo; //将boo赋给"有盘子"
}
public boolean 是否有盘子() //定义一个返回boolean类型的方法"是否有盘子"
{
return 有盘子; //返回boolean类型的"有盘子"
}
public void set有盘子(boolean boo) //set方法,并且参数为boolean
{
有盘子=boo; //将boo赋给有盘子
}
public int getX() //取得x方法
{
return x; //返回x
}
public int getY()//取得y方法
{
return y; //返回y
}
public void 放置盘子(Disk 盘子,HannoiTower con) //定义一个有2个参数的"放置盘子"方法。参数是Disk类和HannoiTower类
{
this.con=con; //当前con等于参数con
con.setLayout(null); //调用on对象的方法setLayout,并设置为空
this.盘子=盘子; //当前盘子等于参数盘子
con.add(盘子); //con对象的add方法,加入"盘子"对象
int w=盘子.getBounds().width; //定义并给一个int类型的w变量一个值,值为"盘子.getBounds().width"
int h=盘子.getBounds().height; //定义并给一个int类型的h变量一个值,值为"盘子.getBounds().height"
盘子.setBounds(x-w/2,y-h/2,w,h);//调用"盘子"对象的setBounds方法,并把传递值
有盘子=true;//boolean类型的对象"有盘子"等于true
con.validate(); //调用con对象的validate方法
}
public Disk 获取盘子() //定义"获取盘子"方法,方法返回Disk对象
{
return 盘子; //返回盘子
}
}
-----------------------另外说一下,楼主太抠门了!!!!!!!!只给5分-----------------------
Java汉诺塔的问题
import java.util.LinkedList;
public class Hanoi {
private int num;
private Peg[] pegs = new Peg[3];
public Hanoi(int num) {
this.num = num;
pegs[0] = new Peg("A");
pegs[1] = new Peg("B");
pegs[2] = new Peg("C");
for (int i = num; i 0; i--) {
pegs[0].pushDown(new Plate(i));
}
}
public void start() {
multiMove(pegs[0], pegs[2], pegs[1], num);
}
/**
* Move a given number plates from one peg to another
* @param from from this peg
* @param to to this peg
* @param temp the temp peg to use
* @param count how many plates to move
*/
public void multiMove(Peg from, Peg to, Peg temp, int count) {
if (count == 1) {
move(from, to);
return;
}
multiMove(from, temp, to, count - 1);
move(from, to);
multiMove(temp, to, from, count - 1);
}
public void move(Peg from, Peg to) {
Plate p = from.popUp();
to.pushDown(p);
System.out.print("Moving " + p.size + " from " + from.name + " to " + to.name + " ");
printPegs();
}
public void printPegs() {
System.out.println(pegs[0].name + ": " + pegs[0] +
" " + pegs[1].name + ": " + pegs[1] +
" " + pegs[2].name + ": " + pegs[2]);
}
public static class Plate {
int size;
Plate(int size) {
this.size = size;
}
@Override
public String toString() {
return String.valueOf(size);
}
}
public static class Peg {
LinkedListPlate plateList = new LinkedList();
String name;
public Peg(String name) {
this.name = name;
}
public void pushDown(Plate p) {
plateList.push(p);
}
public Plate popUp() {
return plateList.pop();
}
@Override
public String toString() {
return plateList.toString();
}
}
public static void main(String[] args) {
Hanoi game = new Hanoi(3);
game.printPegs();
game.start();
}
}
怎样用Java编写汉诺塔程序
package Hanoi;
import java.awt.*;
import java.io.*;
import java.awt.event.*;
public class Hanoi {
public static void main(String args[]) throws IOException {
Hanoi aa = new Hanoi();
aa.go();
}
public void go() throws IOException {
int n;
BufferedReader buf;
buf = new BufferedReader(new InputStreamReader(System.in));
System.out.print("请输入盘数:");
n = Integer.parseInt(buf.readLine());
Hanoi hanoi = new Hanoi();
hanoi.move(n, 'A', 'B', 'C');
}
public void move(int n, char a, char b, char c) {
if (n == 1) {
System.out.println("盘 " + n + " 由 " + a + " 移至 " + c);
} else {
move(n - 1, a, c, b);
System.out.println("盘 " + n + " 由 " + a + " 移至 " + c);
move(n - 1, b, a, c);
}
}
}