2013-12-10 270 views
0

我想尽可能地把这个程序打印出来。将两个1d数组合并成一个二维数组?

Smith  1000 
doe  1200 
john  1400 
bailey 900 
potter 1600 

程序本身具有阵列我要么需要找出可能结合两个一维数组或只是一种方式,以便它在上面的方式打印出正确格式化的方式。

方案:

import java.util.*; 
public class TwoArrays { 

    static Scanner console = new Scanner(System.in); 

    public static void main(String[]args){ 
     String [] name = new String[5]; 
     int [] vote = new int[5]; 

     String lastname; 
     int votecount; 
     int i; 

     for(i=0; i<name.length; i++){ 
      System.out.println("Enter the last name of the candidate: "); 
      lastname = console.next(); 
      name[i]= lastname; 
      System.out.println("Enter the number of votes the candidate got: "); 
      votecount = console.nextInt(); 
      vote[i] = votecount; 
     } 

     String printing = Print(name); 
     int printing2 = Print2(vote); 

    } 

    public static String Print(String [] pname){ 

     for (int i=0; i<pname.length; i++){ 
       System.out.println(pname[i]+ "  \n"); 
     } 
     return "nothing"; 

    } 
    public static int Print2(int [] pvote){ 
     for (int i=0; i<pvote.length; i++){ 
       System.out.println(pvote[i]+ "  \n"); 
     } 
     return 0; 
    } 
} 
+2

使用哈希映射,其中名称是关键,和票是价值 – turbo

回答

2

为此你需要设置使用合理的空间System.out.printf。在这里,我把%-15s作为左对齐。你可以很容易地计算它的形式pname大小。

public static void print(String[] pname, int[] pvote) { 
    for (int i = 0; i < pname.length; i++) { 
     System.out.printf("%-15s %d\n", pname[i], pvote[i]); 
    } 
} 
0

“只是一种正确的格式化它,所以它上面的方式打印出来。”:

public static void Print(String [] pname, int [] votes){ 

     for (int i=0; i<pname.length; i++){ 
       System.out.printf("%-10s %5d\n", pname[i], votes[i]); 
     } 
    } 

那么明显的调用它只有一次,有两个数组作为参数:

Print(name, vote); 

(带最新的编辑,你会得到一些不错的序列上的名称在10中,场左对齐。数宽5场右对齐您只需将其插入格式字符串之间(例如:)添加其它字符。)

+0

我试过这一点,它不能正常工作首先,如果它是一个虚空返回不能在那里,当我去打电话'打印(名称,投票)'没有结束打印 – Bailey507

+0

对不起 - 你的评论被截断了。你得到的错误是什么?我认为没有任何东西的“返回”是有效的,因为'void'函数的结束......这看起来与@ Masud的代码非常相似 - 是不是也适合你? – Floris

+0

这只是扔掉东西的回报。 – Bailey507

0
for (int i=0;i<pname.length;i++) { 
    System.out.println(pname[i]+ "  "+pvote[i]); 
} 
+0

我宁愿使用选项卡,以便按照示例中的要求对齐数字。或者在固定宽度的字段中输出名称。 – Floris

+0

是的,这将是更加整洁。我只使用固定宽度,因为这是现有代码中的内容。 –

0

添加为一个实例变量:

HashMap<String, Integer> candidateMap = new HashMap<String, Integer>(); 

然后在您的循环:

System.out.println("Enter the last name of the candidate: "); 
lastname = console.next();  
System.out.println("Enter the number of votes the candidate got: "); 
votecount = console.nextInt(); 
candidateMap = candidateMap.put(lastname, votecount); 

然后打印方法(信贷@Masud正确打印格式):

public static void Print(){ 
    for (String candidate : candidateMap.keySet()){ 
      System.out.printf("%-15s %d\n", candidate, candidateMap.get(candidate)); 
    } 
} 
+0

标签'\ t'不能正确显示各种字长。 – Masudul

+0

@Masud你是对的。希望你不介意我是否用适当的信用来回答你的答案。 – turbo

相关问题