### Java J2SE 基础知识总结 #### 一、使用 `System.in` 进行输入 在Java中,`System.in` 是一个标准的输入流,它通常用于读取控制台输入的数据。从Java SE 5 开始,引入了一个更加方便的方式来处理这种输入,即使用 `java.util.Scanner` 类。 ##### 示例代码解析: ```java import java.util.*; class test { public static void main(String[] args) { Scanner cin = new Scanner(System.in); System.out.println("请输入你的名字:"); String name = cin.nextLine(); // 读取一行文本 System.out.println("请输入你的年龄"); int age = cin.nextInt(); // 读取一个整数 System.out.println("你的名字是:" + name + " 你的年龄是:" + age); } } ``` 在这个示例中,我们首先导入了 `java.util.*` 包,这样就可以使用 `Scanner` 类。然后创建了一个 `Scanner` 对象 `cin` 来读取来自 `System.in` 的输入。通过调用 `nextLine()` 方法来读取一个完整的行作为字符串输入,而 `nextInt()` 方法则用来读取一个整数输入。此外,还可以使用 `nextDouble()` 等其他方法来读取不同类型的输入数据。 值得注意的是,`Scanner` 类默认按照空格分隔输入,但可以使用 `useDelimiter("\n")` 方法来改变分隔符,使得读取操作在遇到换行符时才停止。 #### 二、输出菱形 输出菱形是一种常见的练习,用于练习循环结构和格式化输出。这里提供了两种不同的方法来实现。 ##### 示例代码解析: ```java int n = 3; for (int i = 1; i <= n; i++) { for (int j = 1; j <= n - i; j++) { System.out.print(" "); } for (int k = 1; k <= 2 * i - 1; k++) { System.out.print("$"); } System.out.println(); } for (int i = n - 1; i >= 1; i--) { for (int j = 1; j <= n - i; j++) { System.out.print(" "); } for (int k = 0; k < 2 * i - 1; k++) { System.out.print("$"); } System.out.println(); } ``` 这段代码首先定义了一个变量 `n` 表示菱形的宽度。第一个循环用于输出菱形的上半部分,第二个循环则用于输出下半部分。内层循环用于输出空格和 `$` 符号来构建菱形。 还有一种更简洁的方法: ```java for (int i = -3; i < 4; i++) { for (int j = 0; j < Math.abs(i); j++) { System.out.print(" "); } for (int j = 0; j < 7 - Math.abs(i) * 2; j++) { System.out.print("*"); } System.out.println(); } ``` 这种方法通过单个循环实现了整个菱形的输出,利用 `Math.abs(i)` 计算出每一行的空格数量,并使用 `7 - Math.abs(i) * 2` 来计算每一行的星号数量。 #### 三、斐波那契数列 斐波那契数列是一个非常著名的数列,每个数字都是前两个数字之和。在Java中,可以通过递归的方式轻松地实现。 ##### 示例代码解析: ```java package fei; import java.util.*; public class Fei { public int func(int n) { if (n == 1) { return 1; } if (n > 1) { return func(n - 1) + func(n - 2); } else if (n < 0) { return -1; } return 0; } public static void main(String[] args) { Fei f = new Fei(); Scanner cin = new Scanner(System.in); System.out.println("请输入一个数字:"); int num = cin.nextInt(); System.out.println("第" + num + "个数字为" + f.func(num)); } } ``` 这段代码中定义了一个名为 `Fei` 的类,其中包含一个名为 `func` 的递归方法来计算斐波那契数列中的第 `n` 个数字。主方法中通过用户输入来决定计算哪个位置的数值,并打印出来。 #### 四、冒泡排序 冒泡排序是一种简单的排序算法,通过重复遍历要排序的数组,比较相邻元素并交换它们(如果顺序错误),直到没有更多的交换为止。 ##### 示例代码解析: ```java public class BubbleSort { public static void main(String[] args) { int[] a = new int[10]; for (int i = 0; i < a.length; i++) { a[i] = (int) (Math.random() * 100); System.out.print(a[i] + "\t"); } for (int i = 0; i < a.length; i++) { for (int j = i + 1; j < a.length; j++) { if (a[i] < a[j]) { int temp = a[i]; a[i] = a[j]; a[j] = temp; } } } System.out.println(); System.out.print("冒泡排序之后:\t"); for (int i : a) { System.out.print(i + "\t"); } } } ``` 这段代码中首先初始化了一个长度为10的数组,并填充了随机生成的整数。接下来的双重循环实现了冒泡排序的核心逻辑,每次循环都会将最大的元素移动到数组的末尾。 #### 五、杨辉三角 杨辉三角是一种展示组合数的几何排列方式,广泛应用于数学和计算机科学中。以下是一个实现该功能的示例。 ##### 示例代码解析: ```java public class Yanghui { public static int[][] yanghui(int n) { int mat[][] = new int[n][]; for (int i = 0; i < n; i++) { mat[i] = new int[i + 1]; mat[i][0] = 1; mat[i][i] = 1; for (int j = 1; j < i; j++) { mat[i][j] = mat[i - 1][j - 1] + mat[i - 1][j]; } } return mat; } public static void print(int table[][]) { for (int i = 0; i < table.length; i++) { for (int j = 0; j < table[i].length; j++) { System.out.print(table[i][j] + "\t"); } System.out.println(); } } public static void main(String[] args) { int[][] triangle = yanghui(5); print(triangle); } } ``` 这段代码中定义了一个名为 `Yanghui` 的类,其中包含一个 `yanghui` 方法用于生成杨辉三角,并通过 `print` 方法将其打印出来。`yanghui` 方法首先创建了一个二维数组来存储三角形,然后通过循环计算每个元素的值。`print` 方法则负责格式化输出结果。
- 粉丝: 0
- 资源: 8
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助