2012-11-18 74 views
2

我对显示数组方法有疑问。我想不出如何使它格式化这个:格式化输出方法

Credit Card # 4: 
8908 9014 8812 1331 

我需要做的是为每个数组元素只是调用显示方法和传递数组的索引在字符串中的标签,我无法弄清楚如何做到这一点,我想这一点,但它是错误的:

System.out.println(display("Credit Card # %d", cred1[i])); 

任何人都可以请提出一个方法来做到这一点?

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

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(); 
    System.out.print(tempArray.length); 
    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++) 
    { 
     System.out.println(display("Credit Card # %d", cred1[i])); 
    } 
} 

public static boolean TryAnother() 
{ 
    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') 
    { 
     return true; 
    } 
    return false; 
} 
} 

回答

1

听起来像所有你需要的是一个新的行字符。例如。

System.out.println("Credit Card # " + cred1[i] + "\n" + cred2.toString()); 

新行字符“\ n”会将输出放到它自己的行上。

+1

其实换行符是“\ n”个 –

+0

以及我需要调用虽然显示方法,那就是让我很困惑,我不明白客场传递数组索引到显示方法的字符串 – user1787811

+1

而你不需要调用toString() - 无论如何添加到另一个字符串时发生的情况 – Bohemian

0

这样做:

System.out.format("Credit Card # %d:\n%s", i, cred1[i].toString()); 
+0

我需要调用displayarray方法内的显示方法,尽管这是什么让我感到困惑 – user1787811

+0

@ user1787811跳过它总共 - 见编辑答案 – Bohemian

+0

但这项任务的要求是调用displayarraymethod内的显示方法 – user1787811