这是两个相似的代码。
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]*$
'。
但是,使用自动评分时是正确的,唯一的问题是代码风格。
第二个代码样式是正确的,但在将名称更改为商和余数后,使用自动分级时会出现问题。我确信所有相关名称都已更改。那么为什么会这样呢?
答案 0 :(得分:1)
您没有更改相关名称的所有。 Java约定是类以大写字母开头,变量,方法和包以小写字母开头,这就是Checkstyle抱怨的原因。更改那些匹配约定是最好的事情,但是如果你真的要替换所有的实例,那么函数就不会有任何变化。
答案 1 :(得分:1)
您需要将其作为输出代码:
System.out.println("Quotient " + quotient);
System.out.println("Remainder " + remainder);
我猜测自动分级器,与我之前看到的类似,根据输出进行分级。你做了小写quotient
和remainder
作为局部变量名,这使得checkstyle很高兴,但你也在输出中降低了它们。
checkstyle不喜欢但是自动编程器批准的初始版本将输出16/3的以下内容:
Quotient 5
Remainder 1
虽然新版本的输出是小写的:
quotient 5
remainder 1
这可能是自动编程器窒息并拒绝它的原因。所有checkstyle都适用于变量和实际逻辑的命名,而不是任何字符串 literals 或输出的格式或大小写。您是否碰巧在整个文件中使用了查找和替换?