You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java实现字符串垂直输出时遇5个语法错误,请求解决

Java字符串垂直输出代码错误排查与修复

尝试实现Java字符串垂直输出功能,编写了如下代码:

import java.util.*;
public class Main
{
     String add_space(s,temp)//for adding the space so as to make all the strings equal
    {
        int to_add= max-s.length();
        String blank=" ";
        for(int i=0;i<to_add;i++)
        {
            blank=s+blank;
        }
        return blank;
    }
    
    void manipulated_array(str, n,max)
    {
        int temp=max;
        for(int i=0;i<n;i++)
        {
            String s=str[i];
            str[i]=add_space(s,temp);
        }
        for(int j =0;j<n;j++)
        {
            System.out.print(str[j].charAt(i));
        }
        System.out.println();
       
    }
    public static void main(String[] args) 
    {
        Main obj = new Main();
        Scanner sc = new Scanner(System.in);
        int n=sc.nextInt();
        String str[]= new String[n];
        for(int i=0;i<n;i++)
        {
            str[i]=sc.nextLine();
        }
        
        {
            int max=str[0].length;
            for(int i=0;i<n;i++)
            {
                if(max=str[i].length())
                  max=str[i].length();
                
            }
            obj.manipulated_array( str, n, max);
          //  add_space(String str[],max);
          
        }
        
    }
}

运行时出现以下5个错误:

Main.java:11: error:  expected
     String add_space( s,temp)//for adding the space so as to make all the strings equal
                        ^
Main.java:11: error:  expected
     String add_space( s,temp)//for adding the space so as to make all the strings equal
                             ^
Main.java:22: error:  expected
    void manipulated_array(str, m,ma)
                              ^
Main.java:22: error:  expected
    void manipulated_array(str, m,ma)
                                 ^
Main.java:22: error:  expected
    void manipulated_array(str, m,ma)
                                    ^
5 errors

错误分析与修复步骤

1. 方法参数缺失类型声明(编译错误核心原因)

Java方法定义必须明确声明每个参数的类型,原代码中add_space和manipulated_array方法的参数都未指定类型,导致编译报错。

  • 修正add_space方法:参数s为String类型,targetLength为int类型(替换原无意义的temp)
  • 修正manipulated_array方法:参数str为String[]类型,n为int类型,max为int类型

2. 未定义变量与方法逻辑错误

  • add_space方法中引用了未定义的max变量,改为使用传入的targetLength参数计算需要补充的空格数
  • 补空格逻辑错误:原代码将字符串拼在空格前,应改为给字符串末尾补充空格以保证对齐,改用StringBuilder实现更高效
  • manipulated_array方法中第二个for循环引用了已失效的变量i,需重新定义列索引循环,并调整遍历逻辑实现垂直输出

3. Main方法中的其他问题

  • sc.nextInt()后直接调用sc.nextLine()会读取换行符,导致第一个字符串为空,需添加sc.nextLine()消费换行
  • str[0].length错误,应为str[0].length()(字符串长度是方法调用)
  • if(max=str[i].length())是赋值语句,应改为if(max < str[i].length())比较长度,更新最大长度

修复后的完整代码

import java.util.*;
public class Main
{
    // 给字符串补充空格到指定长度,不足的在末尾补空格
    String add_space(String s, int targetLength) {
        StringBuilder sb = new StringBuilder(s);
        while (sb.length() < targetLength) {
            sb.append(" ");
        }
        return sb.toString();
    }
    
    void manipulated_array(String[] str, int n, int max) {
        // 先将所有字符串补到最大长度
        for (int i = 0; i < n; i++) {
            str[i] = add_space(str[i], max);
        }
        // 按列输出每个字符,实现垂直输出
        for (int col = 0; col < max; col++) {
            for (int row = 0; row < n; row++) {
                System.out.print(str[row].charAt(col) + " ");
            }
            System.out.println();
        }
    }
    
    public static void main(String[] args) 
    {
        Main obj = new Main();
        Scanner sc = new Scanner(System.in);
        
        System.out.print("输入字符串数量: ");
        int n = sc.nextInt();
        sc.nextLine(); // 消费nextInt()后的换行符
        
        String[] str = new String[n];
        System.out.println("输入" + n + "个字符串:");
        for (int i = 0; i < n; i++) {
            str[i] = sc.nextLine();
        }
        
        // 计算最长字符串的长度
        int max = str[0].length();
        for (int i = 1; i < n; i++) {
            if (str[i].length() > max) {
                max = str[i].length();
            }
        }
        
        obj.manipulated_array(str, n, max);
    }
}

内容的提问来源于stack exchange,提问作者Sumantra Prajapati

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 17:26:05