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) // 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
{
TryAnother(cred1);
cred1 = getInputArray();
DisplayArray(cred1);
}while(s.charAt(0) != 'N' || s.charAt(0) != 'n');
}
return false; // put the return statement here
}
}
こんにちは、TryAnotherメソッドのgetInputArrayメソッドから繰り返してみましたが、do-whileループでこれを試しましたが、do whileループ内でcred1が定義されていないと表示されましたが、cred1のローカルオブジェクトを作成しようとすると、エラーコードに到達できませんこれは、do-whileループが機能する場合の出力の外観です。
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
より多くのクレジットカード番号を取得しますか?(いいえの場合はn):確かに
誰かがdo-whileループを実行する方法を提案できますか?前もって感謝します
なんらかの理由で繰り返し部分を実行しているので、コードを編集しました。noと入力すると、プロセスが終了しません。
何かのようなもの:
発行者ID:321321を入力してくださいアカウント番号:654654654を入力してください入力からの完全な番号:3213 2165 4654 6549 aray
のサイズを入力してください:7発行者IDを入力してください:789789クレジットカード番号0:
7897 8985 6852 9257
クレジットカード#1:
7897 8917 0678 9958
クレジットカード#2:
7897 8900 5781 0934
クレジットカード#3:
7897 8949 2244 6098
クレジットカード#4:
7897 8941 3828 4895
クレジットカード#5:
7897 8965 9233 5006
クレジットカード#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と入力すると、同じ文を繰り返し続けます。配列サイズの文を入力してから繰り返すのはどうすればよいですか。