for循环帮助和存储表达式结果

30byixjq  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(306)

我对java完全陌生,而且我的作业也很费劲,我不只是想问答案,导师甚至没有给我写代码的方法,所以我很费劲。
给我的建议是整理代码的格式,这样所有的行要么在同一个级别上,要么在一个方向上层叠。不用说,这毫无帮助。
我觉得我很接近,但可能会受益于一个正确的方向推动。
问题是:在这一部分中,您将编写一个公共方法calculatechecknumber()来查找s,然后使用(d)部分中给出的表达式来查找c。该方法应该首先创建一个字符串,省略longnumber的最后一个数字,然后通过遍历该字符串找到s(您可以选择对奇数和偶数索引进行单独的迭代,也可以在单个循环中同时进行这两种迭代。)最后,您的方法应该使用(d)中给出的表达式计算并返回c的值。为变量选择有意义的标识符。
表达式:检查长数字是否正好有16位数字。如果不是,则长数字无效。
如果长数字有16位,请从长数字中删除最后一位,因为这是我们要检查的“校验位”。
从索引0开始,然后在每个偶数索引处,将每个数字的值乘以2。在每种情况下,如果结果值大于9,则从中减去9。保持奇数索引处的数字值不变。
将从偶数索引派生的所有新值添加到奇数索引处的值,并将其称为s。
找到你必须加在s上的数字,把它四舍五入到10的下一个最高倍数。叫这个c。如果c等于校验位,那么长的数字可能是有效的。

  1. public class CreditCardChecker
  2. {
  3. // Variable for long numbers to be checked
  4. public String longNumber;
  5. public int checkDigit;
  6. public int checkSum;
  7. public int evenNumber;
  8. /**
  9. * Constructor for objects of class CreditCardChecker
  10. * including long number
  11. */
  12. public CreditCardChecker(String longNumber)
  13. {
  14. // initialise long number variable
  15. this.longNumber=longNumber;
  16. this.checkDigit=checkDigit;
  17. this.checkSum=checkSum;
  18. }
  19. /**
  20. * Sets the value of long number
  21. */
  22. public void setLongNumber(String aLongNumber)
  23. {
  24. this.longNumber=aLongNumber;
  25. }
  26. /**
  27. * method to get the long number
  28. */
  29. public String getLongNumber()
  30. {
  31. return this.longNumber;
  32. }
  33. /**
  34. * method to check that long number has exactly 16 digits
  35. */
  36. public boolean isCorrectLength()
  37. {
  38. if (longNumber.length() == 16)
  39. {
  40. return (true);
  41. }
  42. else
  43. {
  44. return (false);
  45. }
  46. }
  47. /**
  48. * Method to get the first 15 characters of long number
  49. */
  50. public String firstFifteen()
  51. {
  52. return longNumber.substring(0, 15);
  53. }
  54. /**
  55. * Method to calculate the check number from the long number
  56. */
  57. public int calculateCheckNumber()
  58. {
  59. int checkSum=longNumber.charAt(15);
  60. evenNumber = Integer.parseInt(longNumber);
  61. for(int longNumber=0; longNumber<= 15; longNumber++){
  62. System.out.println(evenNumber);
  63. if (evenNumber %2==0)
  64. return (evenNumber *2);
  65. if (evenNumber>=9)
  66. return (evenNumber-9);
  67. checkSum = evenNumber + evenNumber++;
  68. }
  69. return this.evenNumber;
  70. }
  71. }
5ktev3wc

5ktev3wc1#

  1. package com.kickstart;
  2. public class CreditCardChecker {
  3. /**
  4. * Variables
  5. */
  6. public String longNumber;
  7. public int checkDigit;
  8. public int checkSum;
  9. public int evenNumber;
  10. /**
  11. * Constructor for initializing objects of class CreditCardChecker
  12. */
  13. public CreditCardChecker(String longNumber, int checkDigit, int checkSum, int evenNumber) {
  14. this.longNumber = longNumber;
  15. this.checkDigit = checkDigit;
  16. this.checkSum = checkSum;
  17. this.evenNumber = evenNumber;
  18. }
  19. /**
  20. * Getters
  21. */
  22. public int getCheckDigit() {
  23. return checkDigit;
  24. }
  25. public int getCheckSum() {
  26. return checkSum;
  27. }
  28. public int getEvenNumber() {
  29. return evenNumber;
  30. }
  31. public String getLongNumber() {
  32. return longNumber;
  33. }
  34. /**
  35. * Setters
  36. */
  37. public void setEvenNumber(int evenNumber) {
  38. this.evenNumber = evenNumber;
  39. }
  40. public void setCheckSum(int checkSum) {
  41. this.checkSum = checkSum;
  42. }
  43. public void setCheckDigit(int checkDigit) {
  44. this.checkDigit = checkDigit;
  45. }
  46. public void setLongNumber(String longNumber) {
  47. this.longNumber = longNumber;
  48. }
  49. /**
  50. * Method to check that long number has exactly 16 digits and if character are only digits.
  51. * @return true if lenght of string is 16 and contains only digits, false otherwise
  52. */
  53. public boolean isCorrectLength() {
  54. return getLongNumber().length() == 16 && getLongNumber().matches("[0-9]+");
  55. }
  56. /**
  57. * Method multiplies every even number by two and checks if $result is more than 10, if true $result - 9
  58. * otherwise just append number to StringBuilder
  59. * @return String of length 16
  60. */
  61. public String everyEvenNumberIsMultipliedBy2(){
  62. // You can use any variable here you want to append results {String, Integer, etc.}
  63. StringBuilder result = new StringBuilder();
  64. // Method described on line n. 56
  65. if(isCorrectLength()){
  66. // For loop through String "longNumber"
  67. for(int i = 0; i < getLongNumber().length(); i++){
  68. // When character on index of "i" from for loop is an Odd number
  69. if(Character.getNumericValue(getLongNumber().charAt(i)) % 2 == 0){
  70. // We multiplicity number by two and check if number is more than 10
  71. if((Character.getNumericValue(getLongNumber().charAt(i)) * 2) > 10)
  72. // If so we do on number minus nine and write it to our "result" variable
  73. result.append(Character.getNumericValue(getLongNumber().charAt(i)) * 2 - 9);
  74. else
  75. // Otherwise we just append it to result without modifying
  76. result.append(getLongNumber().charAt(i));
  77. } else
  78. // So we do here. I could write this better (we do repetition on this line and line n. 85), but I wanted you to understand what is happening here
  79. result.append(getLongNumber().charAt(i));
  80. }
  81. }
  82. // We return "result" which is of type StringBuilder so we parse it to String
  83. return result.toString();
  84. }
  85. }

这是主课。在这里创建类“creditcardchecker”的对象,并使用类中实现的方法。
注意,包名是我的。你在创建的项目上有你自己的回应。您必须编辑包路径。

  1. package com.kickstart;
  2. public class Main {
  3. public static void main(String[] args) {
  4. CreditCardChecker creditCardChecker = new CreditCardChecker("1234567891234567", 2, 10, 2);
  5. // Note that all did all you asked in questing in comment. You will have to implement other methods as checkSum, etc. Or create new question.
  6. System.out.println(creditCardChecker.getLongNumber().length());
  7. System.out.println(creditCardChecker.getLongNumber());
  8. System.out.println(creditCardChecker.everyEvenNumberIsMultipliedBy2().length());
  9. System.out.println(creditCardChecker.everyEvenNumberIsMultipliedBy2());
  10. }
  11. }
展开查看全部

相关问题