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 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条