【发布时间】:2020-06-02 00:49:53
【问题描述】:
如何使循环检查字符串中是否有 16 位数字,如果不足则重置字符串。我正在尝试制作一个计算校验位的信用卡程序。我有其他一切工作我只是无法让程序检查用户输入字符串中的位数。感谢所有帮助!
import java.util.Scanner;
public class LuhnAlgorithm {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Enter a number credit card number (Enter a blank line to quit: ");
String nums = input.nextLine();
int i = 0;
char chk = nums.charAt(15);
while(!nums .equals("") ) {
if (nums.length()<16 || nums.length() > 15){ //How do I get this line to reset the while loop?
System.out.println("ERROR! Number MUST have exactly 16 digits.");
}
int sum = 0;
for( i = 0; i < 15; i++) {
char numc = nums.charAt(i);
int num = Character.getNumericValue(numc);
if ( i % 2 == 0 ) {
num = num * 2;
if ( num >= 10) {
num = num - 9;
}
}
sum = num + sum;
}
int sum2 = sum % 10;
if (sum2 > 0) {
sum2 = 10 - sum2;
}
int chk2 = Character.getNumericValue(chk);
System.out.println("The check digit should be: " + sum2);
System.out.println("The check digit is: " + chk);
if ( sum2 == chk2) {
System.out.println("Number is valid.");
}
else {
System.out.println("Number is not valid. ");
}
System.out.print("Enter a number credit card number (Enter a blank line to quit:) ");
nums = input.nextLine();
}
System.out.println("Goodbye!");
input.close();
}
}
【问题讨论】:
-
为什么?为什么不直接测试
nums.length() == 16? -
对不起,我是编码新手。你的意思是在while循环中? while(nums.length() == 16 + !nums .equals(""))
-
“重置 while 循环”是什么意思?
-
如果某个东西的长度是 16,你已经知道它不是 ""
-
我需要它打印出错误消息,然后继续运行循环,直到它获得准确的位数。在这种情况下,所需的位数是 16。
标签: java string while-loop string-length