繁体   English   中英

用Java创建电源表

[英]Create a Power Table in Java

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

Base         Power            BaseToPower
1            1                1
5            2                25

等等。 我该怎么做?

使用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

如果有错误,我没有测试对不起错误

Java中Table结构的常见实现是使用Maps List ,因此每一行中的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对象存储在List<TableRow>LinkedHashMap<Integer,TableRow>具体取决于您要如何访问它们。

如果只想找到一个幂的Math.pow(base, power)可以使用Math.pow(base, power)然后将其Math.pow(base, power)转换为int 它可能足够快。 另外,如果要紧凑地存储值,则可以使用int[][3]

如果您始终具有固定长度的幂,那么我会使用Map<int, Map<int, int>或类似Map<int, Vector<int>>东西,因为对于嵌套地图,您必须手动输入权力;)

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*/
        }       
    }   
}   

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM