扫描下一行,但仅限于一定长度

问题描述 投票:0回答:1

我有一个现有的代码,我必须扫描用户在控制台中输入的下一个句子。这句话不能超过 99 个字符。我当前的代码采用

.nextLine()
方法,并将输入的所有内容保存在字符串中。然后它检查该字符串的长度,如果它超过 99,我使用
.substring(0,99)
方法截掉多余的部分。这工作得很好,但我觉得它真的很难看。

问题是,假设用户决定将 Lev Tolstojs 战争与和平的两卷复制粘贴到控制台中,我的程序会首先尝试将其无缘无故地保存为字符串,因为我只需要前 99 个字符。问题出现了:有没有办法告诉扫描仪在达到一定数量的字符后停止扫描?这比扫描所有内容并且比仅使用我需要的部分更便宜。

java string java.util.scanner maxlength
1个回答
0
投票

您可以使用 Reader#read 方法来完成。这是使用

BufferedReader
的示例。

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) {
        // Create a buffered reader for System.in
        try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) {
            char[] buffer = new char[99]; // Define the buffer of appropriate size
            System.out.print("Enter text: ");
            int n = br.read(buffer); // Read user input in the buffer,
                                    // n denotes number of characters read 
            String input = new String(buffer, 0, n); // Create string upto n character
            System.out.println(input);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}

如果输入小于缓冲区大小,缓冲区还将包含换行符。你可能想把它剥掉。

© www.soinside.com 2019 - 2024. All rights reserved.