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

标签 java arrays object format do-while

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;   
}
}

嗨,我的 TryAnother 方法中的 do-while 循环出现问题,当我输入 no 时,我试图让代码因某种原因重复当 do while 循环的条件表明它应该终止时,该进程不会终止,它还会重复告诉用户输入"is"或“否”的行。

类似于:

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):

正如你所看到的,当我输入 no 时。它不断重复同一句话。我想要的是它从输入数组大小句子开始重复,我该怎么做?

最佳答案

更改此:

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

至:

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

关于java - do-while 循环在回答 no 时不会终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13438715/

相关文章:

php - 将复杂的多维数据从 API 保存到数据库中

arrays - 为什么不能在 Go 中分配给 map 内的数组?

c - C 中的 sizeof 数组元素

javascript - 如何在 JavaScript 中使用对象数组

Java : Writing an object to a file avoiding java. lang.StackOverflowError

java - 使用静态类或抽象类创建对象

java - 有没有办法使用调用远程 EJB 的嵌入式容器创建 Spring Boot 应用程序?

java - java中的逻辑异或运算符是什么?

java - 使用匹配器断言 Collection 包含 2 个具有相同属性的对象

javascript - 通过Javascript中的键按字母顺序对对象的对象进行排序