简体   繁体   English

do-while 循环不会在回答 no 时终止

[英]do-while loop not terminate when answer no

package homework4;
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);
    }

    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) {
    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 {
                TryAnother(cred1);
                cred1 = getInputArray();
                DisplayArray(cred1);                
            } while(s.charAt(0) != 'N' || s.charAt(0) != 'n');      
    }
    return false;   
}
}

Hi, I have a problem in my do-while loop in TryAnother method, I'm trying to get the code to repeat for some reason when I enter no the process does not terminate when the condition of the do while loop said it should terminate also it repeat the line that tell user to enter 'yes' or 'no'.嗨,我在TryAnother方法中的do-while循环中TryAnother问题,当我输入 no 时,由于某种原因,我试图让代码重复执行,但当do while循环的条件表示它应该终止时,进程不会终止它还重复告诉用户输入“是”或“否”的行。

something like:就像是:

Please enter issuer ID:321321 
Please enter account number:654654654 
The complete number from your input: 
3213 2165 4654 6549
Please enter size of the aray:7 
Please enter issuer ID:789789 
Credit Card # 0:
7897 8985 6852 9257
Credit Card # 1:
7897 8917 0678 9958
Credit Card # 2:
7897 8900 5781 0934
Credit Card # 3:
7897 8949 2244 6098
Credit Card # 4:
7897 8941 3828 4895
Credit Card # 5:
7897 8965 9233 5006
Credit Card # 6:
7897 8981 8442 5880
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):

As you can see when I enter no.正如你在我输入 no 时所看到的。 it keeps repeating the same sentence.它不断重复同一句话。 What I want is for it to repeat from enter the array size sentence, How can I do this?我想要的是它从输入数组大小的句子开始重复,我该怎么做?

Change this:改变这个:

    }while(s.charAt(0) != 'N' || s.charAt(0) != 'n');       

to:到:

    }while(s.charAt(0) != 'N' && s.charAt(0) != 'n');       

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM