2

我需要用 Java 制作一个权力表。这将被存储。我发现没有办法轻松做到这一点,因为Map只有 2 个条目。是否有捷径可寻?我需要做的是有一个表(不在 GUI 上),如下所示:

Base         Power            BaseToPower
1            1                1
5            2                25

等等。我该怎么做?

4

5 回答 5

4

使用 a Map<int,Map<int,int>>:) 第一张地图的键作为基值,第二张地图的键作为功率和值作为 basetopower

编辑

我认为Map<Integer,Integer[][]>是一个更好的解决方案

用于放置行

Map<Integer,Integer[][]> mainMap = new HashMap<Integer,Integer[][]>();
Integer[][] row1 = new Integer[1][2];//first base and power
row1[0][0] = 1;
row1[0][1] = 1;
Integer[][] row2 = new Integer[1][2];//second base and power
row2[0][0] = 2;
row2[0][1] = 5;

mainMap.put(1,row1);
mainMap.put(25,row2);

用于恢复值

 for (Map.Entry<Integer, Integer[][]> entry : mainMap.entrySet()) {
        System.out.println("Base= " + entry.getKey() 
            + ", Power= " + entry.getValue()[0][0]
            + ", BaseToPower= " + entry.getValue()[0][1]);

}
//mainMap.get(25); will return base and power array

如果有错误,我没有测试它抱歉

于 2013-11-15T01:29:17.027 回答
1

Java 中 Table 结构的一个常见实现是使用 a Listof ,Maps因此每行中的 Map 键是列标题,如下所示:

List<Map<String,Integer>> table = new ArrayList<>();
Map<String,Integer> row1 = new HashMap<>();
row1.put("Base",1);
row1.put("Power",1);
row1.put("BaseToPower",1);
table.add(row1);

等等

然而,更好的解决方案可能是创建一个 bean 类来表示一个表行。

public class TableRow {
   private int base;
   private int power;
   private int baseToPower;

   ... Getters and Setters ...
}

然后,您可以将这些 TableRow 对象存储在 a 中,List<TableRow>或者可能LinkedHashMap<Integer,TableRow>取决于您希望如何访问它们。

于 2013-11-15T01:54:08.170 回答
0

如果您只想找到可以使用的幂的基值,Math.pow(base, power)然后将其转换为int; 它可能已经足够快了。或者,如果您想紧凑地存储值,您可以使用int[][3].

于 2013-11-15T01:29:14.627 回答
0

如果你总是有固定长度的权力,我会使用Map<int, Map<int, int>或类似的东西Map<int, Vector<int>>,因为使用嵌套地图,你必须手动输入权力;)

于 2013-11-15T01:29:20.210 回答
-1
Power Table in Java

在 Java 中创建一个幂表

import java.util.*;    
class powerseries    
{    
    public static void main(String[] ar)    
    {    
    Scanner o=new Scanner(System.in);    
    int num,i,temp=1,temp2=1;    
    System.out.print("\nEnter Table number for powerseries:  ");    
    num=o.nextInt();    

    for(i=1;i<=10;i++)    
        {    
    System.out.println(num+" ^ "+i+" = "+(temp2*num));    
    temp2=temp2*num; /*multiply coming number*/
        }       
    }   
}   
于 2015-02-20T16:03:16.700 回答