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

Java多命令行字符串传入Strcov类处理问题求助

问题:修改Java程序处理多个命令行字符串的大小写转换

我是Java新手,此前完成了读取单个命令行字符串,根据首字符将整个字符串转换为大写或小写的程序。现在需要修改为读取多个命令行字符串,并传入Strcov类处理,但由于变量类型从String变为String[],我不知道该如何修改Strcov类。以下是原有可运行代码和我尝试修改的错误代码:

原有可运行代码

class Strcov{
    
    static String toULCase(String str) {
        
        //Converting string into ASCII value
        char word = str.charAt(0);
        int ascii = word;
        
        //If string start with uppercase, then the whole string turn to uppercase
        //[65,90] is the range for uppercase letter in ASCII
        if(ascii<=90 && ascii >= 65) {
            str = str.toUpperCase();
        }
        
        //If string start with lowercase, then the whole string turn to lowercase
        //[97,122]is the range for lowercase letter in ASCII
        else if(ascii<=122&& ascii>=97) {
            str=str.toLowerCase();
        }
        
        //If does not match, return string value as it is
        return str;
        
    }
    
}

public class Main {

    public static void main(String[] args) {
        Strcov obj= new Strcov();
        String str= args[0];
            
        System.out.print(obj.toULCase(str));
    }

}

尝试修改的错误代码

class Strcov{
    
    static String toULCase(String str[]) {
        
        //Converting string into ASCII value
        char word = str.charAt(0);
        int ascii = word;
        
        //If string start with uppercase, then the whole string turn to uppercase
        //[65,90] is the range for uppercase letter in ASCII
        if(ascii<=90 && ascii >= 65) {
            str = str.toUpperCase();
        }
        
        //If string start with lowercase, then the whole string turn to lowercase
        //[97,122]is the range for lowercase letter in ASCII
        else if(ascii<=122&& ascii>=97) {
            str=str.toLowerCase();
        }
        
        //If does not match, return string value as it is
        return str;
        
    }
    
}

public class Main {

    public static void main(String[] args) {
        Strcov obj= new Strcov();
        String str[];
        
        for(int i =0; i<args.length; i++) {
            str[i]=args[i];
            System.out.print(obj.toULCase(str[i]));
        }
    }

}

错误分析与修改方案

错误点说明

  1. Strcov类方法逻辑错误:你把toULCase的参数改成了String[],但代码里依然调用单个String的方法(比如charAt(0)、toUpperCase()),而字符串数组String[]没有这些方法,编译会直接报错。
  2. Main类数组未初始化:String str[];仅声明了数组但未分配内存空间,直接执行str[i]=args[i]会抛出空指针异常。
  3. 方法调用类型不兼容:Main里调用toULCase(str[i])传入的是单个String,但方法定义的参数是String[],类型不匹配。

方案一:复用原有Strcov方法(最简实现)

原有Strcov.toULCase已经能正确处理单个字符串,完全不需要修改它,只需要在Main类里遍历所有命令行参数,逐个传入该方法处理即可:

class Strcov{
    
    static String toULCase(String str) {
        
        char word = str.charAt(0);
        int ascii = word;
        
        if(ascii<=90 && ascii >= 65) {
            str = str.toUpperCase();
        }
        else if(ascii<=122&& ascii>=97) {
            str=str.toLowerCase();
        }
        
        return str;
        
    }
    
}

public class Main {

    public static void main(String[] args) {
        // 遍历所有命令行参数
        for(String arg : args) {
            // 静态方法无需创建对象,直接通过类名调用
            System.out.print(Strcov.toULCase(arg) + " ");
        }
    }

}

方案二:新增处理字符串数组的方法(批量处理场景)

如果希望Strcov类支持直接处理String[],可以新增一个静态方法,内部循环调用原有的单个字符串处理逻辑:

class Strcov{
    
    static String toULCase(String str) {
        
        char word = str.charAt(0);
        int ascii = word;
        
        if(ascii<=90 && ascii >= 65) {
            str = str.toUpperCase();
        }
        else if(ascii<=122&& ascii>=97) {
            str=str.toLowerCase();
        }
        
        return str;
        
    }

    // 新增批量处理字符串数组的方法
    static String[] toULCaseArray(String[] strs) {
        String[] result = new String[strs.length];
        for(int i=0; i<strs.length; i++) {
            result[i] = toULCase(strs[i]);
        }
        return result;
    }
    
}

public class Main {

    public static void main(String[] args) {
        String[] processedArgs = Strcov.toULCaseArray(args);
        for(String str : processedArgs) {
            System.out.print(str + " ");
        }
    }

}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 01:41:32