特定Java变量的用途
我正在学习AP计算机科学课程,有一个关于Java程序中某个特定变量的用途的简短问题。下面是我自己对教科书中某个程序的轻微修改特定Java变量的用途,java,variables,division,readability,operand,Java,Variables,Division,Readability,Operand,我正在学习AP计算机科学课程,有一个关于Java程序中某个特定变量的用途的简短问题。下面是我自己对教科书中某个程序的轻微修改 public class Nineteen { public static void main(String[] args) { int valid = checkNumber(6145); } public static int checkNumber(int n) {
public class Nineteen {
public static void main(String[] args) {
int valid = checkNumber(6145);
}
public static int checkNumber(int n)
{
int d1,d2,d3,checkDigit,nRemaining,rem;
checkDigit = n % 10;
nRemaining = n / 10;
d3 = nRemaining % 10;
nRemaining /= 10;
d2 = nRemaining % 10;
nRemaining /= 10;
d1 = nRemaining % 10;
rem = (d1 + d2 + d3) % 7;
System.out.println("checkNumber executed.");
if (rem == checkDigit) {
System.out.println("Equal");
}
return 1;
}
}
我的书中说,在上面的这个程序中,
nRepaining
的目的是增强程序的可读性,而不是用作整数除法的左操作数。有人能解释为什么会这样吗?我确信这个程序可以用更简洁的方式重写,但这是它最明显的目的吗?本质上,在这样的上下文中,附加变量的目的是将计算过程分解为更小、更易于理解的步骤。您可以将这些操作组合成更密集的指令集,但是这样就更难理解,更难调试。为此,引用
“调试的难度是一开始编写代码的两倍。因此,如果您尽可能巧妙地编写代码,那么根据定义,您就没有足够的智慧来调试它。”——Brian Kernighan
(以防万一:)是的,它可以压缩,但我认为你的书是对的,它提高了可读性!如果你将其浓缩,那么你就有可能把事情混为一谈,弄错!我认为
d3
行应该是d3=nRemaining%10代码>,不是吗?我现在可以看出这是合乎逻辑的。它只是没有立即引起我的兴趣。如果您碰巧知道:nRemaining
为什么不用于操作数除法?谢谢你和@rahul tripathi的回答。是的@iamnotmaynard谢谢你在旁边指出这一点。你说“操作数除法”是什么意思?除法是一种二进制运算,因此任何除法都必须有两个操作数。一般来说,简单的除法。我对你的问题还是有点不清楚。重新维护是分部业务的一部分。报表nRepaining/=10;可以重写为nRemaining=nRemaining/10;。/=只是一个简写符号,可以节省可怜的程序员的时间(稍微)。