秋招笔试很多都是要自己写输出输出的,所以对常见的整理一下,后续也会持续更新的~~~
目录
1.java中的Scanner类
-
hasNext()方法:用于判断方法是否还有输入
-
next()方法:用于读取下一个输入
-
nextLine():用于读取一行输入
-
hasNextInt() 和 nextInt() 读取一个整数
-
hasNextDouble()和nextDouble():读取一个浮点数
1.1next()方法和nextLine()方法的区别
next()方法遇到空格就停止了,而nextLine方法会读取一整行
1. next()
方法
- 用途:
next()
方法用于读取输入中的下一个完整的“token”(标记)。一个token通常是由非空白字符组成的序列。 - 行为:它读取输入直到遇到空白字符(如空格、制表符或换行符),然后停止读取。它不会读取这些空白字符。
- 返回值:返回的是一个字符串,代表读取的token。
- 特点:如果输入中的第一个字符是空白字符,
next()
将只读取到第一个非空白字符为止。
示例
Scanner scanner = new Scanner(System.in);
System.out.print("Enter a word: ");
String word = scanner.next();
System.out.println("You entered: " + word);
如果用户输入 Hello World
,next()
将只读取 Hello
并将其返回,而 World
将留在输入缓冲区中。
2. nextLine()
方法
- 用途:
nextLine()
方法用于读取输入中的一整行,包括空格。 - 行为:它从当前位置开始读取,直到遇到换行符(
\n
),然后停止读取。它会返回包括换行符在内的所有字符,或者直到输入结束。 - 返回值:返回的是一个字符串,代表读取的整行。
- 特点:
nextLine()
会读取并返回当前行的剩余部分,包括任何空白字符。
示例
Scanner scanner = new Scanner(System.in);
System.out.print("Enter a line: ");
String line = scanner.nextLine();
System.out.println("You entered: \"" + line + "\"");
如果用户输入 Hello World
然后按回车,nextLine()
将读取 Hello World
包括后面的换行符,并将其全部返回。
主要区别
- 读取内容:
next()
只读取到下一个空白字符为止,而nextLine()
读取整行,包括所有空格。 - 空白处理:
next()
忽略空白字符,而nextLine()
包括空白字符。 - 换行符:
nextLine()
包括换行符在返回的字符串中,而next()
不包括。
使用场景
- 使用
next()
当你需要读取单个单词或标记,并且希望自动忽略任何后续的空白。 - 使用
nextLine()
当你需要读取完整的行,包括所有的空格和制表符。
2.print类
-
System.out.print()
- 用于打印信息到控制台,但不会自动换行。如果需要在打印后换行,可以手动添加
\n
。
- 用于打印信息到控制台,但不会自动换行。如果需要在打印后换行,可以手动添加
-
System.out.println()
- 用于打印信息到控制台,并在打印结束后自动换行。
-
用于格式化输出信息到控制台。它允许你控制输出的格式,类似于C语言中的System.out.printf()
printf
// 格式化输出一个带有小数点的数字
double temperature = 36.5789;
System.out.printf("当前体温是: %.2f 度\n", temperature);
3.常用的转换函数类
Java版本:
3.1.String.valueOf
String.valueOf
是一个静态方法,用于将各种数据类型转换为它们的字符串表示形式。
方法是 String
类的一个实用工具方法,它可以接受不同类型的参数,如整数、浮点数、对象等,并返回相应的字符串表示。
eg:
int num = 123;
String str = String.valueOf(num);
System.out.println(str); // 输出: "123"
3.2 Integer.parseInt
将字符串转换为整数
String numberStr = "123";
int number = Integer.parseInt(numberStr); // number 变量的值将是 123
3.3. toCharArray
toCharArray
是一个方法,它属于 String
类和 StringBuilder
类。这个方法用于将字符串或字符串构建器对象转换为字符数组。
String str = "Hello";
char[] charArray = str.toCharArray();
System.out.println(charArray); // 输出: [H, e, l, l, o]
3.4.substring
substring
方法是 String
类的一个非常有用的实例方法,它用于从原始字符串中提取子字符串。
substring(int beginIndex)
:从beginIndex
指定的位置开始提取,直到字符串的末尾。substring(int beginIndex, int endIndex)
:从beginIndex
指定的位置开始,到endIndex
指定的位置结束(但不包括endIndex
指定的字符)。
参数说明
beginIndex
:子字符串开始处的索引(包括此索引)。endIndex
:子字符串结束处的索引(不包括此索引)。
3.5.split方法
split
方法是 String
类的一个非常有用的方法,它用于根据指定的分隔符将字符串分割成多个子字符串,并返回一个字符串数组。这个方法非常灵活,可以处理各种字符串分割的需求.
split
方法有两种重载形式:
split(String regex)
:根据给定的正则表达式regex
将字符串分割成多个子字符串。split(String regex, int limit)
:除了根据正则表达式分割字符串外,还可以指定一个限制参数limit
,用于控制返回数组的最大长度。
参数说明
regex
:一个正则表达式,用于指定分割字符串的规则。limit
(可选):一个整数,用于限制返回数组的最大长度。如果省略这个参数,将返回所有分割后的子字符串。
返回值
- 返回一个字符串数组,包含分割后的所有子字符串。
String str = "one,two,three";
String[] parts = str.split(",");
System.out.println(Arrays.toString(parts)); // 输出:[one, two, three]
3.6.trim方法
number[i].trim是移除字符串两段的空白元素
3.7.字符串中常用的函数
参考链接:
4.常见输入
4.1.输入是整数序列
1,2,3 类似于这样的
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int[] nums = new int[n];
for(int i=0;i<n; i++)
{
nums[i]= scanner.nextInt();
}
4.2.输入整数数组
[1,2,3,0]这样格式的
- 首先将整数数组转换成字符串
- 然后去除字符串的收尾[]
- 用,号进行分割
- 将字符串转为整数
Scanner scanner = new Scanner(System.in);
// 提示用户输入数组
System.out.println("请输入一个数组(例如 [1,2,3,4,0]):");
String input = scanner.nextLine();
// 去除输入字符串的首尾方括号
input = input.substring(1, input.length() - 1);
// 将输入的字符串分割成单独的数字字符串
String[] numbers = input.split(",");
// 创建一个数组来存储整数
int[] array = new int[numbers.length];
// 将字符串数组转换为整数数组
for (int i = 0; i < numbers.length; i++) {
array[i] = Integer.parseInt(numbers[i].trim());
}
// 关闭 Scanner 对象
scanner.close();
假如这个题是输入一个整数数组然后对其进行排序再输出,后面的输出部分如下:
// 对数组进行排序
Arrays.sort(array);
// 输出排序后的数组
System.out.print("排序后的数组: [");
for (int i = 0; i < array.length; i++) {
System.out.print(array[i]);
if (i < array.length - 1) {
System.out.print(", ");
}
}
System.out.println("]");
4.3.输入是字符串数组形式
例如这样的格式["a","e"," ","f"]
我们以一个题举例吧,对上面的字符串数组求反变为["f"," ", "e","a"]
读取输入输出的整体思路
- 去除收尾的方括号
- 将字符串进行分割(使用到正则表达式)====》转为字符串数组
- 输出时添加方括号和逗号
整体代码如下:
public class ReverseArray {
public static void main(String[] args) {
// 创建一个 Scanner 对象来读取控制台输入
Scanner scanner = new Scanner(System.in);
// 提示用户输入一个格式化的字符串数组
System.out.println("请输入一个字符串数组(例如 [\"a\",\"b\",\"\" ,\"d\" ,\"f\"]):");
String input = scanner.nextLine();
// 去除输入字符串的首尾方括号
input = input.substring(1, input.length() - 1);
// 将输入的字符串分割成单独的字符串元素
String[] elements = input.split("\\s*,\\s*");
for (int i = 0; i < elements.length; i++) {
System.out.println(elements[i]);
}
// 反转数组
String[] reversedArray = reverseArray(elements);
// 输出反转后的数组
System.out.print("反转后的数组: [");
// boolean isFirst = true; // 用于控制逗号的打印
for (int i = 0; i < reversedArray.length; i++) {
System.out.print( reversedArray[i]);
if (i < reversedArray.length - 1){
System.out.print(",");
}
}
System.out.println("]");
}
// 反转数组的方法
public static String[] reverseArray(String[] array) {
// 创建一个新的字符串数组,长度与原数组相同
String[] reversed = new String[array.length];
// 遍历原数组,并将元素按相反顺序放入新数组
for (int i = 0; i < array.length; i++) {
reversed[i] = array[array.length - 1 - i];
}
// 返回反转后的数组
return reversed;
}
}
怎么控制什么时候添加和不添加逗号,倒数第二次循环
4.4. 输入是字符形式
后续有新的也会持续更新的~~~~~