牛客网新手入门130_59-61题_20260107

32 阅读3分钟

前言

通过 3 道入门实战题,提炼 Java 高频语法知识点,避开新手常见坑,聚焦「输入处理」「字符串操作」「数组遍历」核心逻辑,适合入门者快速掌握!

一、核心语法知识点(真题对应)

1. Scanner 输入处理(必学必用)

核心语法

  • nextInt():读取整数,不消耗换行符
  • nextLine():读取整行字符串(含空格)
  • 读取单个字符:next().charAt(0)(Scanner 无nextChar()方法)

关键坑点 & 解决方案

// 错误:nextInt()后直接读字符串,会读取空串
int n = scanner.nextInt();
String s = scanner.nextLine(); // 踩坑!
// 正确:加一行消耗换行符
int n = scanner.nextInt();
scanner.nextLine(); // 关键:消去残留换行符
String s = scanner.nextLine(); // 正常读取

2. 字符串操作(核心特性 + 用法)

核心语法

语法作用注意点
str.length()获取字符串长度与数组arr.length(无括号)区分
str.charAt(index)提取指定索引字符索引从 0 开始
str.toCharArray()转为字符数组(可变)String 本身不可修改
new String(char[])字符数组转回字符串修改后必须转回才能输出
str.split(" ")按分隔符分割字符串成数组如空格分割单词

实战代码

// 字符串修改标准流程
String s = "wxhak";
char[] arr = s.toCharArray(); // 转数组(可变)
arr[2] = 'x'; // 修改指定位置字符
String res = new String(arr); // 转回字符串

3. 数组 & 区间遍历(题目高频场景)

核心语法

  • 增强 for 循环:for (String word : words)(遍历数组 / 集合)
  • 区间转换:题目 1 开头区间 → 数组 0 开头(start = l-1,end = r-1)
  • 闭区间遍历:for (int j = start; j j++)(不遗漏最后一个元素)

实战代码

// 题目区间[3,5] → 数组索引[2,4]
int l = 3, r = 5;
int start = l - 1, end = r - 1;
for (int j = start; j ++) { // 闭区间遍历
    System.out.println(arr[j]);
}

4. 字符串拼接优化

  • 推荐用StringBuilder(可变字符序列),避免String +=(频繁创建对象)
StringBuilder sb = new StringBuilder();
sb.append('A'); // 拼接字符
sb.append("BC"); // 拼接字符串
System.out.println(sb.toString()); // 输出ABC

二、实战案例(精简版,聚焦语法)

案例 1:字符串区间替换(输入 + 字符串修改)

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt(), m = scanner.nextInt();
        scanner.nextLine(); // 消换行符
        char[] arr = scanner.nextLine().toCharArray(); // 转数组
        
        for (int i = 0; i  {
            int l = scanner.nextInt(), r = scanner.nextInt();
            char c1 = scanner.next().charAt(0), c2 = scanner.next().charAt(0);
            int start = l - 1, end = r - 1; // 区间转换
            for (int j = start; j ; j++) {
                if (arr[j] == c1) arr[j] = c2; // 替换逻辑
            }
        }
        System.out.println(new String(arr));
        scanner.close();
    }
}

案例 2:字符串首字母简写(分割 + 拼接)

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String input = scanner.nextLine();
        scanner.close();
        
        String[] words = input.split(" "); // 分割单词
        StringBuilder sb = new StringBuilder();
        for (String word : words) {
            char upper = Character.toUpperCase(word.charAt(0)); // 首字母转大写
            sb.append(upper);
        }
        System.out.println(sb);
    }
}

三、核心知识点速记

  1. 输入:nextInt()后必加nextLine(),读字符用next().charAt(0);
  1. 字符串:不可修改,转char[]操作,拼接用StringBuilder;
  1. 区间:1→0 索引转换,闭区间遍历用 `j ;
  1. 规范:Scanner 用完关闭,变量命名见名知意。

四、新手避坑清单

✅ 不直接用nextInt()接nextLine();

✅ 不调用Scanner.nextChar();

✅ 不忽略索引转换(1→0);

✅ 不用j 区间;

✅ 不用String +=` 大量拼接。

总结

Java 入门核心是吃透「基础语法 + 实战场景」,以上知识点覆盖 80% 入门编程题,重点掌握输入处理、字符串修改、区间遍历的标准流程,就能举一反三。建议多动手敲代码,把语法融入场景记忆更牢固~

你在学习中还踩过哪些语法坑?欢迎评论区分享!