Java 一些我能做的事';不明白

Java 一些我能做的事';不明白,java,Java,下面是两个类似的代码 private static void div(String[] args) { if (args.length != 3) { System.out.println("Error: Argument count mismatch"); return; } int Quotient = 0; int Remainder = 0; if (isInteger(args[1]) && is

下面是两个类似的代码

private static void div(String[] args) {
    if (args.length != 3) {
        System.out.println("Error: Argument count mismatch");
        return;
    }
    int Quotient = 0; 
    int Remainder = 0;
    if (isInteger(args[1]) && isInteger(args[2])) {
        if (Integer.parseInt(args[2]) == 0) {
            System.out.println("Undefined");
            return;
        }
        Quotient = Integer.parseInt(args[1]) / Integer.parseInt(args[2]);
        Remainder = Integer.parseInt(args[1]) % Integer.parseInt(args[2]);
    } else {
        System.out.println("Error: Argument type mismatch");
        return;
    }
    System.out.println("Quotient " + Quotient);
    System.out.println("Remainder " + Remainder);
}


private static void div(String[] args) {
    if (args.length != 3) {
        System.out.println("Error: Argument count mismatch");
        return;
    }
    int quotient = 0; 
    int remainder = 0;
    if (isInteger(args[1]) && isInteger(args[2])) {
        if (Integer.parseInt(args[2]) == 0) {
            System.out.println("Undefined");
            return;
        }
        quotient = Integer.parseInt(args[1]) / Integer.parseInt(args[2]);
        remainder = Integer.parseInt(args[1]) % Integer.parseInt(args[2]);
    } else {
        System.out.println("Error: Argument type mismatch");
        return;
    }
    System.out.println("quotient " + quotient);
    System.out.println("remainder " + remainder);
}
当执行checkstyle审核时,第一个审核的名称有问题,它将显示

MyCLIParser.java:98:13:名称“商”必须匹配模式“
^[a-z][a-zA-Z0-9]*$
”。 MyCLIParser.java:99:13:名称“余数”必须匹配模式“
^[a-z][a-zA-Z0-9]*$

但是,使用自动分级时是正确的,唯一的问题是代码样式


第二个的代码样式是正确的,但在将名称更改为商和余数后,在使用自动分级时出现问题。我确信所有相关名称都已更改。那么为什么会发生这种情况呢?

您没有更改所有相关的名称。Java惯例是类以大写字母开头,变量、方法和包以小写字母开头,这就是Checkstyle抱怨的原因。更改这些实例以匹配约定是最好的做法,但如果您真的要替换所有实例,则函数不会有任何更改

您需要将此设置为输出代码:

System.out.println("Quotient " + quotient);
System.out.println("Remainder " + remainder);
我猜自动分级机与我以前见过的类似,是根据输出进行分级的。您使用小写的
余数
作为局部变量名,这让checkstyle很高兴,但您也在输出中将它们小写

checkstyle不喜欢但自动签名者批准的初始版本将在16/3期间输出以下内容:

Quotient 5
Remainder 1
新版本的输出为小写:

quotient 5
remainder 1

这可能就是为什么自动签名者会扼杀并拒绝它。checkstyle只适用于变量的命名和实际逻辑,而不是任何字符串文本或输出的格式或大小写。您是否对整个文件使用了查找和替换?

这不正确,OP正在更改所有相关的名称和功能(进行了太多更改)。但我使用了“查找”选项卡来替换所有匹配的大小写?@AliceBobCatherineDough correct,这样做还修改了程序输出中的字符串文字。请尝试我的答案中给出的建议。@AliceBobCatherineDough好的,那么当您不更改输出的大小写时,自动加载器是否接受您的解决方案?好的,@AliceBobCatherineDough如果此答案有助于您,请在其旁边标记复选标记,以便其他用户知道它解决了您的查询。抱歉,我误解了你的最后一句话。如何才能不更改输出?你的意思是不改变System.out.println(“商”+商)?@AliceBobCatherineDough我强烈建议使用JavaIDE,比如Eclipse。它将支持在没有盲文本查找和替换的情况下更改变量名。哦,我将System.out.println(“商”+商)更改为System.out.println(“商”+商),并且它接受。非常感谢你!很难说不知道自动评分。但是,如果它坚持为字段指定一个特定的套管,那么您只能向运行该服务的组织投诉。我不认为固定外壳(如果你在任何地方都这样做,并且没有引入新的阴影,这在你的部分示例中看不到)会使程序出错。