按行输入按列输出,把字符串存入二维数组中,按列的形式输出字符串

随机输入一字符串S,字符串S包含二维数组的列数N+字符串A,其中二维数组行数为存储字符串的所需最小正整数,将字符串A按行存储二维数组中,按列方向可读输出另一个字符串B,并输出列向字符串B。列字符串结尾多余的空格需去除。

 

/**
 * 输入描述:
 * 输入字符串S,为包含二维数组的列数N和字符串A,
 * 二维数组列数N为数字字符,行向字符串A为数字的字符串,
 * 且字符串不会包括分号,二维数组列数N和字符串A用分号隔开。
 * 输出描述:
 * 输出列向字符串
 */
import java.util.Scanner;
public class Main{
    public static void stringColumnPrint(String str){
        String arr[] = str.split(";");
        int n = Integer.valueOf(arr[0]);//n表示列数
        String str2 = arr[1];
        int m = str2.length()/n; //计算行数
        if(str2.length()%n!=0){
            m = m +1;
        }
        char chars[][] = new char[m][n];//字符串存入二维数组按m行n列存入,数组对应的i和j
        for(int i=0;i<m;i++){
            for(int j=0;j<n;j++){
                if((i*n +j)<str2.length()){
                    chars[i][j] = str2.charAt(i*n+j);
                }else {
                    chars[i][j] = ' ';
                }
            }
        }//字符串二组数组按列输出,即n行m列,数组对应的j和i
        //列输出,原来的行变为列,原来的列变为原来的行,对一个i和j位置也要变
        String result = "";
        for(int i= 0;i<n;i++){
            for(int j=0; j<m;j++){
                result +=chars[j][i];
            }
        }
        System.out.println(result.trim());//使用trim()去除最后空格,trim()是去除前后空格
    }
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        stringColumnPrint(sc.nextLine());
    }
}

 

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值