如何在 java 中的一行中的特定位置插入一个字符?

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

我环顾四周,没有发现任何我真正理解或可以做的事情,我希望有一个简单的解决方案。我必须在这个程序的每一行之后的第 20 个字符槽中添加一个

*

这是我的代码:

package StarBorder;

import java.util.Scanner;

public class NewTry {

    public static void main(String[] args) {
        System.out.println("Please input a word: ");
        Scanner stringScanner = new Scanner(System.in);
        String input = stringScanner.nextLine();
        int numberOfCharacters = 20;
        System.out.println("**********************");
        for (int i = 0; i < input.length(); i += numberOfCharacters) {
            String part = input.substring(i, Math.min(input.length(), i + numberOfCharacters));
            System.out.println("*" + part + "*");
        }
        System.out.println("**********************");
    }
}

这是打印出来的内容:

**********************
*Hello I am doing som*
*e code, hello ther p*
*eople on stack overf*
*low* // I need this to be over where the other *'s are.
**********************

我需要它是一个满是星星的正方形。感谢您的回答。

我也希望它不是在第 20 个字符处截断,而是在之前的空格处截断。然而,这是次要问题。

java for-loop substring java.util.scanner
2个回答
0
投票
System.out.printf("*%-20s*%n", part);

这将打印

part
格式化,左对齐(
-
),paddel 到 20。
%n
换行符。


0
投票

一个简单的方法是简单地打印出一堆空格来填充空白(填充字符串)。 例如,对于输入的最后一行你可以做

    System.out.print("*" + part);
    for(int i=0; i < numberOfCharacters - 2 - part.length(); i++){
        System.out.print(" ");
    }
    System.out.println("*");

这段代码所做的只是找到部分长度与理想子串长度之间的差异,然后打印出那么多空格。

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