简体   繁体   中英

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'.

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. 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');       

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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