Java 代码输出默认值而不是用户输入值
这是CreditCardNumber类中issuerId和acountNum的默认值 但我想要的是这个输出Java 代码输出默认值而不是用户输入值,java,object,Java,Object,这是CreditCardNumber类中issuerId和acountNum的默认值 但我想要的是这个输出 enter issuer ID:321321 Please enter account number:654654654 The complete number from your input:0000009999999990 每4个字符之间有4个空格 为什么我的代码输出默认值而不是用户输入值 有人能告诉我代码或getinput函数有什么问题吗 提前感谢iftemp1.charAti!
enter issuer ID:321321
Please enter account number:654654654
The complete number from your input:0000009999999990
每4个字符之间有4个空格
为什么我的代码输出默认值而不是用户输入值
有人能告诉我代码或getinput函数有什么问题吗
提前感谢iftemp1.charAti!=在公共布尔数字字符串中,temp.charAtj应为iftemp1.charAti==temp.charAtj
您正在将字符列入白名单,因此您应该计算匹配的字符,而不是不匹配的字符
验证字符串是否由至少一个数字组成的另一种方法:
Enter a credit card issuer number: 321321
Enter an account number: 654654654
The complete number from your input:
3213 2165 4654 6549
我还没有测试过这个,但它应该可以工作。我刚刚调试了你的代码,你的digit方法对于这个特定的输入返回false,这将使构造函数中的if条件失败,因此它仍然保留默认值 只需使用正则表达式检查传递的字符串是否为数字 更改您的数字方法,如下所示
public boolean Digits(String str) {
for(int i = 0; i < str.length(); i++)
if(str.charAt(i) < '0' || str.charAt(i) > '9')
return false;
return str.length() > 0;
}
将yout toString方法更改如下:
public boolean Digits(String temp1)
{
if(temp1.matches("[0-9]+")){
return true;
}
else {
return false;
}
}
它给了我输出:
public String toString()
{ String s="";
String str= issuerID + accountNum ;
return str;
}
为什么在3213 2165 4654 6549的末尾有一个9?我不知道这是我从profwell得到的测试结果。我用另一种方法做的,如果我用你的方法做的话,if语句看起来会不同。我测试了Digits方法,结果是一样的well@user1787811不过,我的第一点应该仍然成立。你试过了吗?好的,我现在更改了代码,我从你的输入中得到了完整的号码:321321654654654-930@user1787811kewl,它现在起作用了吗??这是期望的输出吗??如果这是一个赋值,我不建议您使用正则表达式。@user1787811但我强烈建议如果这是一个赋值,不要使用正则表达式。如何在lke中添加校验位数字3213216546546549,所以我想将数字9添加到校验位的第一位,您必须格式化它,但首先,您想要这样的输出吗??
public boolean Digits(String temp1)
{
if(temp1.matches("[0-9]+")){
return true;
}
else {
return false;
}
}
public String toString()
{ String s="";
String str= issuerID + accountNum ;
return str;
}
Please enter issuer ID:321321
Please enter account number:654654654
The complete number from your input:321321654654654