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在线编程常见输入输出练习场

注意

  1. 注意数据类型范围(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);
        }
    }
}
posted @ 2024-10-06 15:33  wajiez  阅读(17)  评论(0)    收藏  举报