为了账号安全,请及时绑定邮箱和手机立即绑定

数组越界?带字符串拆分

数组越界?带字符串拆分

杨魅力 2021-11-24 19:01:04
数组越界?我正在尝试执行图片中的输出:使用此输入“Java 是一种编程语言”到目前为止,这是我的代码import java.util.Scanner;public class Main{    public static void main(String[] args) {        Scanner in = new Scanner(System.in);        System.out.print("Input Phrase:");        String s = in.nextLine();        String[] word=s.split(" ");        String rts=" ";        for(int i=0;i<word.length;i++){            if(word[i].length()>=rts.length()){                rts=word[i];            }        }        int thisislength = rts.length();        for (int a = 0; a < thisislength ;a++ ) {            for (int b = 0; b < word.length ;b++ ) {                System.out.print(word[b].charAt(a)+" ");              }            System.out.println();        }    }}当第二个单词到达它的最后一个字母时,它不会继续 for 循环,即使第二个单词达到其最大长度,有没有办法继续循环。
查看完整描述

3 回答

?
MMTTMM

TA贡献1869条经验 获得超4个赞

<应该是<=。我认为将左右手颠倒使其更具可读性。


    for (int a = 0; a < thisislength; a++) {

        System.out.printf("%3d ", a+1);

        for (int b = 0; b < word.length; b++) {

            if (a >= word[b].length()) {

                System.out.print(' ');

            } else {

                System.out.print(word[b].charAt(a));  

            }

            System.out.print(' ');

        }

        System.out.println();

    }

或者代替 if-else 语句:


        for (String w : word) {

            System.out.print(a >= w.length() ? ' ' : w.charAt(a));  

        }


查看完整回答
反对 回复 2021-11-24
?
慕后森

TA贡献1802条经验 获得超5个赞

这给出了你想要的结果:

for (int a = 0; a < thisislength ;a++ ){

    for (int b = 0; b < word.length ;b++ ){

        if(word[b].length() < a + 1){

            System.out.print("  ");

        }else{

            System.out.print(word[b].charAt(a) + " ");

        }

    }

    System.out.println();

}

这一行被改变了:

if(word[b].length() < a + 1)and notif(word[b].length() < a)

和 2 个空格在 if 语句中打印


查看完整回答
反对 回复 2021-11-24
?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

试试这个解决方案希望它能帮助你:


import java.util.ArrayList;

import java.util.List;

import java.util.Scanner;

public class Main

{

    public static void main(String[] args) {


        // GET VALUE FROM THE CONSOLE

        Scanner in = new Scanner(System.in);

        System.out.print("Input Phrase:");

        String s = in.nextLine();


        // SPLIT STRING TO WORDS

        String[] words = s.split(" ");


        // CREATE A LIST OF CHAR_ARRAY CALLED : matrix

        List<char[]> matrix = new ArrayList<char[]>();


        // REFERENCE THE LARGEST WORD IN WORDS ARRAY EX : PROGRAMMING IS THE LARGEST 

        int max = 0;


        // FILL OUR LIST OF ARRAY OF CHARS

        for (int b = 0; b < words.length ;b++ ) {

            char[] chars =  words[b].toCharArray();

            max = (chars.length >= max)? chars.length :  max ;

            matrix.add( chars );

        }


        // PRINT OUR CHAR

        for (int a = 0; a < max ;a++ ) {


            for (int b = 0; b < words.length ;b++ ) {


                if(a < matrix.get(b).length) {

                    System.out.print(matrix.get(b)[a]);

                    System.out.print(" ");

                }else {

                    System.out.print(" ");

                    System.out.print(" ");

                }


            }


            System.out.println("");


        }


    }

}


查看完整回答
反对 回复 2021-11-24
  • 3 回答
  • 0 关注
  • 123 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信