Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 代码输出默认值而不是用户输入值_Java_Object - Fatal编程技术网

Java 代码输出默认值而不是用户输入值

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!

这是CreditCardNumber类中issuerId和acountNum的默认值

但我想要的是这个输出

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