wenshubiubiu 2018-09-28 01:00 采纳率: 50%
浏览 978
已采纳

Java编程,在空格前后添加数字.同时换行时数字自动增加

输入一串字符串,比如asdsaf asdasda dasdasda asdasdad dsafsadsa asfaqeqe saddadas。
然后输入一个数字让字符串按输入的数字自动换行,比如输入字符串20,则输出为:
asdsaf asdasda dasda
sda asdasdad dsafsad
sa asfaqeqe saddadas
该函数的返回值为预处理后的文本。预处理后的文本为每一节,及其所在的行号。中间以分号隔开。若一个节跨越了多行,则行号用逗号隔开,并从小到大进行排列。
比如以上结果就为:asdsaf【1】; 【1】,asdasda【1】; 【1】,dasdasda【1,2】; 【2】;
asdasdad【2】; 【2】; dsafsadsa【2,3】; 【3】; asfaqeqe【3】; 【3】; saddadas

尽量给一个详细的思路,或者完整的代码。我在自动换行加一这里遇到了一些问题。
以下是本人的部分代码:
import java.util.Scanner;

public class HuanHnag1 {

public static void main(String[] args) {
    Scanner sc=new Scanner(System.in);
    System.out.println("输入字符串");
    String str=sc.nextLine();
    int count=0;
    System.out.println("输入换行数字");
    int x=sc.nextInt();
    for(int i=0;i<str.length();i++) {
        System.out.print(str.charAt(i));
        count++;            
        if(count==x) {
            System.out.println();
            count=0;
        }


    }

    System.out.println();
    for(int row=1;row<=4;row++) {
        String s1=str.replaceAll(" ","("+row+");"+" "+"("+row+");");
        System.out.print(s1);
    }   

}
public static String[] StrToArray(String str)
{
    String[] str_array = new String[str.length()];
    for (int cnt = 0; cnt < str.length(); cnt++)
    {
       // str_array[cnt] = str[cnt];
    }
    return str_array;
}

}

  • 写回答

5条回答 默认 最新

  • 爱码少年 00fly.online 2018-09-28 02:46
    关注
    
        public static void main(String[] args)
        {
            String input = "asdsaf asdasda dasdasda asdasdad dsafsadsa asfaqeqe saddadas";
            int lenth = 20;
    
            // 多个空格替换为1个之后trim
            input = input.replaceAll(" +", " ").trim();
    
            String pre = input.replace(" ", "(%s);(%s);");
            System.out.println(input);
            System.out.println(pre);
    
            // 切分为数组
            String[] inputArr = input.split(" ");
            // 空格数量
            int count = inputArr.length - 1;
    
            int pos = 0;
            int start;
            int end;
            String startShow;
            String endShow;
    
            List<String> replace = new ArrayList<String>();
            for (String arr : inputArr)
            {
                start = pos / lenth + 1;
                pos = pos + arr.length();
                end = pos / lenth + 1;
    
                // 空格长度为1
                pos++;
                if (start == end)
                {
                    startShow = start + "";
                    endShow = end + "";
                }
                else
                {
                    startShow = start + "," + end;
                    endShow = end + "";
                }
                // 打印原始数组字符以及待替换数据
                System.out.println(String.format("%s   %s to %s", arr, startShow, endShow));
                if (replace.size() < count * 2)
                {
                    replace.add(startShow);
                    replace.add(endShow);
                }
            }
            // 打印最后结果
            System.out.println(String.format(pre, replace.toArray(new String[0])));
        }
    

    运行结果
    图片说明

    回答完毕,希望能帮到你!

    本人码云 https://gitee.com/00fly/ 欢迎访问!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog