我无法想象的东西

时间:2015-02-22 01:46:25

标签: 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]) && 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]*$'。

但是,使用自动评分时是正确的,唯一的问题是代码风格。

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

您需要将其作为输出代码:

System.out.println("Quotient " + quotient);
System.out.println("Remainder " + remainder);

我猜测自动分级器,与我之前看到的类似,根据输出进行分级。你做了小写quotientremainder作为局部变量名,这使得checkstyle很高兴,但你也在输出中降低了它们。

checkstyle不喜欢但是自动编程器批准的初始版本将输出16/3的以下内容:

Quotient 5
Remainder 1

虽然新版本的输出是小写的:

quotient 5
remainder 1

这可能是自动编程器窒息并拒绝它的原因。所有checkstyle都适用于变量和实际逻辑的命名,而不是任何字符串 literals 或输出的格式或大小写。您是否碰巧在整个文件中使用了查找和替换?