Java - 4 输入输出
Java - 4 输入输出
输入
// 导入包
import java.util.Scanner;
public class Input{
public static void main (String[] args){
// 创建对象
Scanner scanner = new Scanner(System.in);
// 使用方法接收用户输入字符串
}
}
接受输入字符串
String name = scanner.next(); // 以空格作为分隔符
接受输入字符
char gender = myScanner.next().charAt(0);
读一整行
String s = scanner.nextLine();
接受输入int
int age = scanner.nextInt();
接受输入double
double score = myScanner.nextDouble();
判断是否有下一个输入
scanner.hasNext()
scanner.hasNextInt()
scanner.hasNextDouble()
scanner.hasNextLine()
注意事项
int total = ms.nextInt();
System.out.println(total); // 5
String s = ms.nextLine(); // 空
System.out.println(s);
问题点:当调用 ms.nextInt() 读取一个整数后,输入流中仍然保留着换行符(即用户按下 Enter 键产生的换行),这会导致接下来的 nextLine() 方法读取到这个换行符,而不是期望的用户输入的字符串
解决方法:
int total = ms.nextInt();
ms.nextLine(); // 消耗掉换行符
String s = ms.nextLine();
int total = Integer.parseInt(input); // 将字符串转换为整数
String s = ms.nextLine();
输出
System.out.println();//换行打印,输出之后会自动换行
System.out.print();//不换行打印
System.out.printf();//按格式输出
字符串处理
- 用
charAt()方法来取出其中某一字节(计数从0开始)
字符串 -> 字符
String a = "Hello"; // a.charAt(1) = 'e'
- 用
substring(a, b)方法可得到子串(第2个参数位置上的字符不包括进来,有 b-a个字符)
字符串 -> 字符串
System.out.println(a.substring(0, 4)) // output "Hell"
join()使用指定的分隔符,将字符串数组或集合中的元素连接成一个单一的字符串
字符串数组 -> 字符串
String[] s1 = {"Hello", "World", "Java"};
// 使用空格连接字符串数组
String result = String.join(" ", s1);
System.out.println(result); // 输出: Hello World Java
split()将一个字符串根据指定的分隔符分割成多个子字符串,并返回一个字符串数组
字符串 -> 字符串数组
String[] languages = s.split(";"); // s.split(" ")
// 使用正则表达式
String[] fruits = s.split("[,; ]+"); // 用逗号、分号和空格分隔
// 字符串数组 转 int
for(int i = 0; i<ss.length; i++){
sum += Integer.parseInt(ss[i]);
}
toCharArray()将字符串变为字符数组
字符串 -> 字符数组
char[] ch = s.toCharArray();
StringBuilder
// 不传入初始值,创建空对象:StringBuilder sb = new StringBuilder()
StringBuilder sb = new StringBuilder("Hello");
// 追加字符串、字符、int
sb.append(" World");
System.out.println(sb.toString()); // 输出: Hello World
// 插入字符串
sb.insert(5, ",");
System.out.println(sb.toString()); // 输出: Hello, World
// 删除字符(串)
sb.delete(5, 6); // 6不包含
System.out.println(sb.toString()); // 输出: Hello World
// 反转字符串
sb.reverse();
// 替换字符
sb.replace(0, 5, "Hi");
System.out.println(sb.toString()); // 输出: Hi World
// 获取字符
char ch = sb.charAt(0);
System.out.println(ch); // 输出: H
// 长度和容量
System.out.println("Length: " + sb.length()); // 输出: Length: 10
System.out.println("Capacity: " + sb.capacity()); // 输出: Capacity: 16 (初始值)
// 转换为字符串
String result = sb.toString();
System.out.println(result); // 输出: Hi World
字符处理
char c = 'A';
// 检查字符类型
System.out.println("Is letter: " + Character.isLetter(c)); // 输出: true
System.out.println("Is digit: " + Character.isDigit(c)); // 输出: false
// 转换大小写
char lower = Character.toLowerCase(c);
System.out.println("Lowercase: " + lower); // 输出: a
// 检查空白字符
char space = ' ';
System.out.println("Is whitespace: " + Character.isWhitespace(space)); // 输出: true
数组排序
- 整型、浮点型:按数值大小排序
import java.util.Arrays;
Arrays.sort();
字符串排序
- 字符数组:按字典序排序(例如,'a' < 'b' < 'c')
import java.util.Scanner;
import java.util.Arrays;
public class Main{
public static void main(String[] args){
Scanner ms = new Scanner(System.in);
while(ms.hasNext()){
int total = ms.nextInt();
ms.nextLine();
String s = ms.nextLine(); // c d a bb e
String[] ss = s.split(" ");
Arrays.sort(ss);
System.out.print(String.join(" ",ss)); // a bb c d e
System.out.println();
}
}
}
牛客网练习 - OJ在线编程常见输入输出练习场
注意:
- 注意数据类型范围(Long)
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner ms = new Scanner(System.in);
while(ms.hasNext()){
Long a = ms.nextLong();
if(ms.hasNext()){
Long b = ms.nextLong();
Long sum = 0L;
sum = a + b;
System.out.println(sum);
}else
System.out.println(a);
}
}
}

浙公网安备 33010602011771号