Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.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_Arrays_Object_Repeat_Do While - Fatal编程技术网

Java 在回答“是”时重复该方法

Java 在回答“是”时重复该方法,java,arrays,object,repeat,do-while,Java,Arrays,Object,Repeat,Do While,有更多的信用卡号码吗?(n代表否):当然 有人能建议一种执行边做边做循环的方法吗? 先谢谢你 我已经编辑了代码,现在由于某种原因它正在执行重复部分,当我输入no时,该过程不会终止 比如: 请输入发卡机构ID:321 请输入帐号:654654654 输入的完整数字: 3213213216546546549 请输入aray的大小:7 请输入发卡机构ID:789789 信用卡#0: 7897898568529257 信用卡#1: 789789170678958 信用卡#2: 7897890057810

有更多的信用卡号码吗?(n代表否):当然

有人能建议一种执行边做边做循环的方法吗? 先谢谢你

我已经编辑了代码,现在由于某种原因它正在执行重复部分,当我输入no时,该过程不会终止

比如:

请输入发卡机构ID:321 请输入帐号:654654654 输入的完整数字: 3213213216546546549
请输入aray的大小:7 请输入发卡机构ID:789789 信用卡#0:

7897898568529257
信用卡#1:

789789170678958
信用卡#2:

7897890057810934
信用卡#3:

7897894922446098
信用卡#4:

7897894138284895
信用卡#5:

7897896592335006
信用卡#6:

7897898184425880

Enter a credit card issuer number: 321321
Enter an account number: 654654654
The complete number from your input: 
3213 2165 4654 6549

Enter the number of elements in the array: 7
Enter an issuer ID# (6 digits): 789789

Credit Card # 0: 
7897 8931 4062 1219

Credit Card # 1: 
7897 8920 2125 3522

Credit Card # 2: 
7897 8971 9793 0944

Credit Card # 3: 
7897 8979 3216 3090

Credit Card # 4: 
7897 8995 0461 8493

Credit Card # 5: 
7897 8948 8037 5909

Credit Card # 6: 
7897 8966 0251 9953

Get more credit card numbers? (n for no): ok

Enter the number of elements in the array: 3
Enter an issuer ID# (6 digits): 345345

Credit Card # 0: 
3453 4576 6705 1666

Credit Card # 1: 
3453 4548 1163 5684

Credit Card # 2: 
3453 4563 8807 0419
正如您所看到的,当我输入no时,它会不断重复相同的句子,我希望它从输入数组大小的句子开始重复
如何执行此操作?

您应该将
cred1
定义为一个全局静态方法,不在
main
例程中


或者将
cred1
作为参数传递给
getInputArray(…)
,后者将它们进一步传递给
TryAnother(…)

,您应该将
cred1
定义为一个全局静态方法,在
main
例程之外


或者将
cred1
作为参数传递给
getInputArray(…)
,然后将它们进一步传递给
TryAnother(…)
,我不确定您希望这个程序的输出是什么。由于您询问了一个编译错误,我编辑了您的代码并删除了两个编译错误

  • TryAnother()
    中未定义
    cred1
    。因此,必须将其作为参数传递。像这样
    TryAnother(信用卡号[]cred1)
  • TryAnother()。这将给您一个无法访问的语句编译错误,因为在方法中执行
    return
    语句后,将不再执行。因此,您必须将
    return true
    语句放在do while循环之后
  • 这是正确的代码。
    import java.util.Scanner;
    公共类程序4{

    静态扫描仪=新扫描仪(System.in)

    公共静态void main(字符串[]args) {信用卡号[]cred1; CreditCardNumber cred2=getInput(); 显示(“输入的完整数字:”,cred2); cred1=getInputArray(); 显示阵列(cred1); TryAnother(cred1);//将变量cred1作为参数传递 }

    公共静态CreditCardNumber getInput(){ 字符串ID; 字符串accNum; CreditCardNumber tempCred;
    System.out.printf(“请输入发卡机构ID:”); ID=scanner.next(); System.out.printf(“请输入账号:”); accNum=scanner.next(); tempCred=新信用卡号(ID,accNum); 返回tempCred; }

    公共静态无效显示(字符串ch,CreditCardNumber cred2) { 系统输出println(ch); System.out.println(cred2.toString().replaceAll(“.{4}”,“$0”);
    }

    公共静态CreditCardNumber[]getInputArray() { CreditCardNumber[]临时数组; 字符串tempID; 整数大小;
    System.out.printf(“请输入aray的大小:”); 大小=scanner.nextInt(); 如果(尺寸<1) { 尺寸=1; } tempArray=新信用卡号[大小]; System.out.printf(“请输入发卡机构ID:”); tempID=scanner.next(); for(int i=0;i 公共静态void显示数组(CreditCardNumber[]cred1) { 对于(int i=0;i 公共静态布尔TryAnother(CreditCardNumber[]cred1)//将cred1作为参数传递 { 字符串s; System.out.printf(“获取更多信用卡号码?(n表示否):”; s=scanner.next(); 如果(s.charAt(0)!=N'| s.charAt(0)!=N') { 做 {
    cred1=getInputArray(); }而(s.charAt(0)!=“N”| s.charAt(0)!=“N”); } return false;//将return语句放在这里 }

    }

    //虚拟类 类别信用卡号{ 字符串ID; 字符串accNum; 公共信用卡号码(){ } 公共信用卡号(字符串ID、字符串accNum){ this.ID=ID; this.accNum=accNum; } public void created(字符串tempID){ ID=tempID; } }

    我不确定您希望这个程序的输出是什么。由于您询问了一个编译错误,我编辑了您的代码并删除了两个编译错误

  • TryAnother()
    中未定义
    cred1
    。因此,必须将其作为参数传递。像这样
    TryAnother(信用卡号[]cred1)
  • TryAnother()。这将给您一个无法访问的语句编译错误,因为在方法中执行
    return
    语句后,将不再执行。因此,您必须将
    return true
    语句放在do while循环之后
  • 这是正确的代码。
    import java.util.Scanner;
    公共类程序4{

    静态扫描仪=新扫描仪(System.in)

    公共静态void main(字符串[]args) {信用卡号[]cred1; CreditCardNumber cred2=getInput(); 显示(“输入的完整数字:”,cred2); cred1=getInputArray(); 显示阵列(cred1); TryAnother(cred1);//将变量cred1作为参数传递 }

    公共静态信用卡
    Enter a credit card issuer number: 321321
    Enter an account number: 654654654
    The complete number from your input: 
    3213 2165 4654 6549
    
    Enter the number of elements in the array: 7
    Enter an issuer ID# (6 digits): 789789
    
    Credit Card # 0: 
    7897 8931 4062 1219
    
    Credit Card # 1: 
    7897 8920 2125 3522
    
    Credit Card # 2: 
    7897 8971 9793 0944
    
    Credit Card # 3: 
    7897 8979 3216 3090
    
    Credit Card # 4: 
    7897 8995 0461 8493
    
    Credit Card # 5: 
    7897 8948 8037 5909
    
    Credit Card # 6: 
    7897 8966 0251 9953
    
    Get more credit card numbers? (n for no): ok
    
    Enter the number of elements in the array: 3
    Enter an issuer ID# (6 digits): 345345
    
    Credit Card # 0: 
    3453 4576 6705 1666
    
    Credit Card # 1: 
    3453 4548 1163 5684
    
    Credit Card # 2: 
    3453 4563 8807 0419
    
    Get more credit card numbers? (n for no):n
    Get more credit card numbers? (n for no):n
    Get more credit card numbers? (n for no):no
    Get more credit card numbers? (n for no):
    
    import java.util.Scanner; public class Prog4 {

    static Scanner scanner = new Scanner(System.in);

    public static void main(String[] args) { CreditCardNumber[] cred1; CreditCardNumber cred2 = getInput(); Display("The complete number from your input:", cred2); cred1 = getInputArray(); DisplayArray(cred1); TryAnother(cred1); // pass variable cred1 as a parameter }

    public static CreditCardNumber getInput() { String ID; String accNum; CreditCardNumber tempCred;
    System.out.printf("Please enter issuer ID:"); ID = scanner.next(); System.out.printf("Please enter account number:"); accNum = scanner.next(); tempCred = new CreditCardNumber(ID, accNum); return tempCred; }

    public static void Display(String ch, CreditCardNumber cred2) { System.out.println(ch); System.out.println(cred2.toString().replaceAll(".{4}", "$0 "));
    }

    public static CreditCardNumber[] getInputArray() { CreditCardNumber[] tempArray; String tempID; int size;
    System.out.printf("Please enter size of the aray:"); size = scanner.nextInt(); if(size < 1) { size = 1; } tempArray = new CreditCardNumber[size]; System.out.printf("Please enter issuer ID:"); tempID = scanner.next(); for(int i = 0; i < tempArray.length; i++) { tempArray[i] = new CreditCardNumber(); tempArray[i].CreateCred(tempID); } return tempArray; }

    public static void DisplayArray(CreditCardNumber[] cred1) { for(int i = 0; i< cred1.length; i++) { Display("Credit Card # " + i+":" + '\n', cred1[i]); } System.out.println(); }

    public static boolean TryAnother(CreditCardNumber[] cred1) // pass cred1 as a parameter { String s; System.out.printf("Get more credit card numbers? (n for no):"); s = scanner.next(); if(s.charAt(0) != 'N' || s.charAt(0) != 'n') { do {
    cred1 = getInputArray(); }while(s.charAt(0) != 'N' || s.charAt(0) != 'n'); } return false; // put the return statement here }

    }

    // A dummy class class CreditCardNumber{ String ID; String accNum; public CreditCardNumber(){ } public CreditCardNumber(String ID,String accNum){ this.ID = ID; this.accNum = accNum; } public void CreateCred(String tempID){ ID = tempID; } }