Java教程 第34页 Java 实例 – 汉诺塔算法 Java 实例 汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。 后来,这个传说就演变为汉诺塔游戏,玩法如下: 1.有三根杆子A,B,C。A杆上有若干碟子 2.每次移动一块碟子,小的只能叠在大的上面 3.把所有碟子从A杆全部移到C杆上 以下实例演示了汉诺塔算法的实现: /* author by w3cschool.cn MainClass.java */ public class MainClass { public static void main(String[] args) { int nDisks = 3; doTowers(nDisks, 'A', 'B', 'C'); } public static void doTowers(int topN, char from, char inter, char to) { if (topN == 1){ System.out.println("Disk 1 from " + from + " to " + to); }else { doTowers(topN - 1, from, to, inter); System.out.println("Disk " + topN + " from " + from + " to " + to); doTowers(topN - 1, inter, from, to); } } } 以上代码运行输出结果为: Disk 1 from A to C Disk 2 from A to B Disk 1 from C to B Disk 3 from...
2024-04-01
Java 实例 – for 和 foreach循环使用 Java 实例 for 语句比较简单,用于循环数据。 for循环执行的次数是在执行前就确定的。语法格式如下: for(初始化; 布尔表达式; 更新) { //代码语句 } foreach语句是java5的新特征之一,在遍历数组、集合方面,foreach为开发人员提供了极大的方便。 foreach 语法格式如下: for(元素类型t 元素变量x : 遍历对象obj){ 引用了x的java语句; } 以下实例演示了 for 和 foreach循环使用: /* author by w3cschool.cn Main.java */ public class Main { public static void main(String[] args) { int[] intary = { 1,2,3,4}; forDisplay(intary); foreachDisplay(intary); } public static void forDisplay(int[] a){ System.out.println("使用 for 循环数组"); for (int i = 0; i < a.length; i++) { System.out.print(a[i] + " "); } System.out.println(); } public static void foreachDisplay(int[] data){ System.out.println("使用 foreach 循环数组"); for (int a : data) { System.out.print(a+ " "); } } } 以上代码运行输出结果为: 使用 for 循环数组 1 2 3 4 使用 foreach 循环数组 1 2 3 4 Java 实例
2024-04-01
Java 实例 – 斐波那契数列 Java 实例 斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368…… 特别指出:第0项是0,第1项是第一个1。 这个数列从第三项开始,每一项都等于前两项之和。 以下实例演示了 Java 斐波那契数列的实现: /* author by w3cschool.cn MainClass.java */ public class MainClass { public static long fibonacci(long number) { if ((number == 0) || (number == 1)) return number; else return fibonacci(number - 1) + fibonacci(number - 2); } public static void main(String[] args) { for (int counter = 0; counter <= 10; counter++){ System.out.printf("Fibonacci of %d is: %d\n", counter, fibonacci(counter)); } } } 以上代码运行输出结果为: Fibonacci of 0 is: 0 Fibonacci of 1 is: 1 Fibonacci of 2 is: 1 Fibonacci of 3 is: 2 Fibonacci of 4 is: 3 Fibonacci of 5 is: 5 Fibonacci of...
2024-04-01
Java 实例 – Varargs 可变参数使用 Java 实例 Java1.5提供了一个叫varargs的新功能,就是可变长度的参数。 “Varargs”是”variable number of arguments”的意思。有时候也被简单的称为”variable arguments” 定义实参个数可变的方法:只要在一个形参的”类型”与”参数名”之间加上三个连续的”.”(即”…”,英文里的句中省略号),就可以让它和不确定个实参相匹配。 以下实例创建了 sumvarargs() 方法来统计所有数字的值: /* author by w3cschool.cn Main.java */ public class Main { static int sumvarargs(int... intArrays){ int sum, i; sum=0; for(i=0; i< intArrays.length; i++) { sum += intArrays[i]; } return(sum); } public static void main(String args[]){ int sum=0; sum = sumvarargs(new int[]{10,12,33}); System.out.println("数字相加之和为: " + sum); } } 以上代码运行输出结果为: 数字相加之和为: 55 Java 实例
2024-04-01
Java 实例 – 标签(Label) Java 实例 Java 中的标签是为循环设计的,是为了在多重循环中方便的使用break 和coutinue 。 以下实例当在循环中使用 break 或 continue 循环时跳到指定的标签处: /* author by w3cschool.cn Main.java */ public class Main { public static void main(String[] args) { String strSearch = "This is the string in which you have to search for a substring."; String substring = "substring"; boolean found = false; int max = strSearch.length() - substring.length(); testlbl: for (int i = 0; i <= max; i++) { int length = substring.length(); int j = i; int k = 0; while (length-- != 0) { if(strSearch.charAt(j++) != substring.charAt(k++)){ continue testlbl; } } found = true; break testlbl; } if (found) { System.out.println("发现子字符串。"); } else { System.out.println("字符串中没有发现子字符串。"); } } } 以上代码运行输出结果为: 发现子字符串。 Java 实例
2024-04-01
Java 实例 – 方法重载 Java 实例 先来看下方法重载(Overloading)的定义:如果有两个方法的方法名相同,但参数不一致,哪么可以说一个方法是另一个方法的重载。 具体说明如下: 方法名相同 方法的参数类型,个数顺序至少有一项不同 方法的返回类型可以不相同 方法的修饰符可以不相同 main方法也可以被重载 以下实例演示了如何重载 MyClass 类的 info 方法: /* author by w3cschool.cn MainClass.java */ class MyClass { int height; MyClass() { System.out.println("无参数构造函数"); height = 4; } MyClass(int i) { System.out.println("房子高度为 " + i + " 米"); height = i; } void info() { System.out.println("房子高度为 " + height + " 米"); } void info(String s) { System.out.println(s + ": 房子高度为 " + height + " 米"); } } public class MainClass { public static void main(String[] args) { MyClass t = new MyClass(3); t.info(); t.info("重载方法"); //重载构造函数 new MyClass(); } } 以上代码运行输出结果为: 房子高度为 3 米 房子高度为 3 米 重载方法: 房子高度为 3 米 无参数构造函数 Java 实例
2024-04-01
Java 实例 – enum 和 switch 语句使用 Java 实例 Java 创建枚举类型要使用 enum 关键字,隐含了所创建的类型都是 java.lang.Enum 类的子类 对enum进行遍历和switch的操作示例代码: /* author by w3cschool.cn Main.java */ enum Car { lamborghini,tata,audi,fiat,honda } public class Main { public static void main(String args[]){ Car c; c = Car.tata; switch(c) { case lamborghini: System.out.println("你选择了 lamborghini!"); break; case tata: System.out.println("你选择了 tata!"); break; case audi: System.out.println("你选择了 audi!"); break; case fiat: System.out.println("你选择了 fiat!"); break; case honda: System.out.println("你选择了 honda!"); break; default: System.out.println("我不知道你的车型。"); break; } } } 以上代码运行输出结果为: 你选择了 tata! Java 实例
2024-04-01
Java 实例 – 输出数组元素 Java 实例 以下实例演示了如何通过重载 MainClass 类的 printArray 方法输出不同类型(整型, 双精度及字符型)的数组: /* author by w3cschool.cn MainClass.java */ public class MainClass { public static void printArray(Integer[] inputArray) { for (Integer element : inputArray){ System.out.printf("%s ", element); System.out.println(); } } public static void printArray(Double[] inputArray) { for (Double element : inputArray){ System.out.printf("%s ", element); System.out.println(); } } public static void printArray(Character[] inputArray) { for (Character element : inputArray){ System.out.printf("%s ", element); System.out.println(); } } public static void main(String args[]) { Integer[] integerArray = { 1, 2, 3, 4, 5, 6 }; Double[] doubleArray = { 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7 }; Character[] characterArray = { 'H', 'E', 'L', 'L', 'O' }; System.out.println("输出整型数组:"); printArray(integerArray); System.out.println("\n输出双精度型数组:"); printArray(doubleArray); System.out.println("\n输出字符型数组:"); printArray(characterArray); } }...
2024-04-01
Java 实例 – 获取当前时间 Java 实例 以下实例演示了如何使用 Date 类及 SimpleDateFormat 类的 format(date) 方法来输出当前时间: /* author by w3cschool.cn 文件名:Main.java */ import java.text.SimpleDateFormat; import java.util.Date; public class Main{ public static void main(String[] args){ SimpleDateFormat sdf = new SimpleDateFormat();// 格式化时间 sdf.applyPattern("yyyy-MM-dd HH:mm:ss a");// a为am/pm的标记 Date date = new Date();// 获取当前时间 System.out.println("现在时间:" + sdf.format(date)); // 输出已经格式化的现在时间(24小时制) } } 以上代码运行输出结果为: 现在时间:2015-03-27 21:27:28 下午 Java 实例
2024-04-01
Java 实例 – break 关键字用法 Java 实例 Java break 语句可以直接强行退出当前的循环,忽略循环体中任何其他语句和循环条件测试。 以下实例使用了 break 关键字来跳出当前循环: /* author by w3cschool.cn Main.java */ public class Main { public static void main(String[] args) { int[] intary = { 99,12,22,34,45,67,5678,8990 }; int no = 5678; int i = 0; boolean found = false; for ( ; i < intary.length; i++) { if (intary[i] == no) { found = true; break; } } if (found) { System.out.println(no + " 元素的索引位置在: " + i); } else { System.out.println(no + " 元素不在数组总"); } } } 以上代码运行输出结果为: 5678 元素的索引位置在: 6 Java 实例
2024-04-01