java - 虽然循环重复太多次
问题描述
我是计算机科学工程专业的第一年,我目前正在学习 Java 编程课程。这是我尝试学习的第一种编程语言,但我完全陷入了困境。我必须为类设计一个程序,该程序接受用户输入的信用卡号并确定它是否有效。我不知何故弄乱了我的循环,现在整个事情不断重复至少比我需要的次数多 5 倍。我该如何解决这个问题?3:00 到期,我吓坏了。这是我的代码:
package osu.cse1223;
import java.util.Scanner;
public class Project07 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
System.out.print("Enter a credit card number (enter a blank line to quit):");
String cardNumber = in.nextLine();
int length = cardNumber.length();
if (length != 16 && length > 0) {
System.out.print("ERROR! Number MUST have exactly 16 digits");
}
else if (length <= 0) {
System.out.println("Goodbye!");
}
else {
char checkDigitChar = cardNumber.charAt(15);
int checkDigit = Character.getNumericValue(checkDigitChar);
int pos = 0;
while (pos < 16) {
char digit = cardNumber.charAt(pos);
int number = Character.getNumericValue(digit);
int doubled = number * 2;
pos = pos + 2;
int sum = 0;
if (doubled > 9) {
String sub = Integer.toString(doubled);
char one = sub.charAt(0);
char two = sub.charAt(1);
int numOne = Character.getNumericValue(one);
int numTwo = Character.getNumericValue(two);
int doubleAdjusted = numOne + numTwo;
sum = sum + doubleAdjusted;
}
else {
}
int newPos = 1;
int newSum = 0;
while (newPos < 16) {
char digitForSum = cardNumber.charAt(newPos);
int individualNum = Character.getNumericValue(digitForSum);
newPos = newPos + 2;
newSum = individualNum + newSum;
}
int total = sum + newSum;
String subTwo = Integer.toString(total);
char onesPlace = subTwo.charAt(1);
int ones = Character.getNumericValue(onesPlace);
int realCheckDigit = 10 - ones;
System.out.println("Check digit should be: " + realCheckDigit);
System.out.println("Check digit is: " + checkDigit);
if (checkDigit == realCheckDigit) {
System.out.println("Number is valid");
}
else {
System.out.println("Number is not valid");
}
}
}
}
}
解决方案
你没有在正确的地方结束你的第一个循环。
int doubleAdjusted = numOne + numTwo;
sum = sum + doubleAdjusted;
}
else {
}
}// ADD THIS TO END THE FIRST WHILE LOOP
}
并从代码底部删除 a 。
推荐阅读
- ios - 在没有 CallKit UI 的情况下在最近通话中显示拨出电话
- javascript - 为什么 g 元素在 svg 之外渲染
- python - Python到Php使用http请求发布数据
- firefox - Selenium webdriver 打开默认的 Firefox 配置文件而不是预定义的配置文件
- unity3d - Unity Parent 的 SetActive() 会影响孩子吗?
- python - 如何从 Firebase 存储中下载 json 格式的数据?
- android - 具有布局膨胀或屏幕顶部的底部表
- typescript - 未设置响应。这是否在未作为承诺返回的异步调用中使用
- ruby-on-rails - Audited - 获取可审计对象的实例
- php - 正则表达式忽略(停止捕获)封装在方括号中的字符串