我对java完全陌生,而且我的作业也很费劲,我不只是想问答案,导师甚至没有给我写代码的方法,所以我很费劲。
给我的建议是整理代码的格式,这样所有的行要么在同一个级别上,要么在一个方向上层叠。不用说,这毫无帮助。
我觉得我很接近,但可能会受益于一个正确的方向推动。
问题是:在这一部分中,您将编写一个公共方法calculatechecknumber()来查找s,然后使用(d)部分中给出的表达式来查找c。该方法应该首先创建一个字符串,省略longnumber的最后一个数字,然后通过遍历该字符串找到s(您可以选择对奇数和偶数索引进行单独的迭代,也可以在单个循环中同时进行这两种迭代。)最后,您的方法应该使用(d)中给出的表达式计算并返回c的值。为变量选择有意义的标识符。
表达式:检查长数字是否正好有16位数字。如果不是,则长数字无效。
如果长数字有16位,请从长数字中删除最后一位,因为这是我们要检查的“校验位”。
从索引0开始,然后在每个偶数索引处,将每个数字的值乘以2。在每种情况下,如果结果值大于9,则从中减去9。保持奇数索引处的数字值不变。
将从偶数索引派生的所有新值添加到奇数索引处的值,并将其称为s。
找到你必须加在s上的数字,把它四舍五入到10的下一个最高倍数。叫这个c。如果c等于校验位,那么长的数字可能是有效的。
public class CreditCardChecker
{
// Variable for long numbers to be checked
public String longNumber;
public int checkDigit;
public int checkSum;
public int evenNumber;
/**
* Constructor for objects of class CreditCardChecker
* including long number
*/
public CreditCardChecker(String longNumber)
{
// initialise long number variable
this.longNumber=longNumber;
this.checkDigit=checkDigit;
this.checkSum=checkSum;
}
/**
* Sets the value of long number
*/
public void setLongNumber(String aLongNumber)
{
this.longNumber=aLongNumber;
}
/**
* method to get the long number
*/
public String getLongNumber()
{
return this.longNumber;
}
/**
* method to check that long number has exactly 16 digits
*/
public boolean isCorrectLength()
{
if (longNumber.length() == 16)
{
return (true);
}
else
{
return (false);
}
}
/**
* Method to get the first 15 characters of long number
*/
public String firstFifteen()
{
return longNumber.substring(0, 15);
}
/**
* Method to calculate the check number from the long number
*/
public int calculateCheckNumber()
{
int checkSum=longNumber.charAt(15);
evenNumber = Integer.parseInt(longNumber);
for(int longNumber=0; longNumber<= 15; longNumber++){
System.out.println(evenNumber);
if (evenNumber %2==0)
return (evenNumber *2);
if (evenNumber>=9)
return (evenNumber-9);
checkSum = evenNumber + evenNumber++;
}
return this.evenNumber;
}
}
1条答案
按热度按时间5ktev3wc1#
这是主课。在这里创建类“creditcardchecker”的对象,并使用类中实现的方法。
注意,包名是我的。你在创建的项目上有你自己的回应。您必须编辑包路径。