2014-10-30 84 views
0

我需要存储25个不同的数组,其中位置1是人的名称,其余索引是int,用于执行数学运算。我有一个String arrray [25] [53]。如何使数组[0-25] [1-52]是一个整数?我假设.parseInt,但我不知道他们是如何工作考虑我仍然在学习Java。如何将整数存储到字符串中的多维数组中

String[][] volunteerNamesAndHours = new String [25][53]; 
    int ID = 0; 
    int week; 
    do{ 
     volunteerNamesAndHours[ID][NAME] = input.next(); 
      for(week = 1; week < 53; week++){ 
       volunteerNamesAndHours[ID][week] = Integer.parseInt(null, ID); 

编辑: 我会使用OOP或地图,但考虑到我们还没有得到远在我当然不希望在我的步边界,并让我的教授疯了。我知道这不是最直观的,但是这是我最终提出任何身体看到一个问题?

public static String[][] getvolunteerChart(Scanner input){ 
    String[][] volunteerNamesAndHours = new String [25][53]; 
    int ID = 0; 
    int week; 
    do{ 
     volunteerNamesAndHours[ID][NAME] = input.next(); 
      for(week = 1; week < 53; week++){ 
       volunteerNamesAndHours[ID][week] = Integer.toString(input.nextInt()); 
      } 
     ID++;  
    } 
    while(ID <= 24); 

    return volunteerNamesAndHours;   

      } 
+0

还没到OOP呢。我确定我会在接下来的两周内这样做。 – jscincy1 2014-10-30 12:35:31

+0

使用Map查看答案 – brso05 2014-10-30 12:37:40

回答

0

您应该按照面向对象的方法,并在这样的类封装的志愿者数据:

public class Volunteer { 

    private int id; 

    private String name; 

    private int hours; 

    . 
    . 
    . 

    public in getId() { 
     return id; 
    } 

    public void setid(int id) { 
     this.id = id; 
    } 

    . 
    . 
    . 

} 

现在你可以将它们存储在一个List或数组。与阵列不同,List通常没有预定义的大小限制。

List<Volunteer> volunteers = new ArrayList<>(); 

// Or as an array 

Volunteer[] volunteers = new Volunteer[25]; 

然后,您可以遍历列表,并使用getter和setter这样做你的数学:

for (Volunteer volunteer : volunteers) { 
    int oldHours = volunteer.getHours(); 
    int newHours = oldHours + 8; 

    volunteer.setHours(newHours); 
} 
-1

如果你坚持要用一个String数组,你将需要使用Integer类的toString功能。

E.g.

Integer.toString(42); 

但是,这会在尝试稍后对它们执行数学运算时引起疼痛。

+0

我需要每个数组(array [0] [0],array [1] [0] ...等)的第一个索引作为名称,从而使我将其声明为字符串数组。 – jscincy1 2014-10-30 12:37:24

+0

好吧,我错过了。你仍然想使用整数数组。把一堆整数你想在字符串数组中进行数学运算会导致痛苦。因此,使用其他答案中建议的映射可能是这里的一种方式。 – cowls 2014-10-30 12:40:15

1

我会建议使用HashMap中关键和整数数组列表作为价值存储的名字一样

Map<String, ArrayList<Integer>> volunteerNamesAndHoursMap = new HashMap<String, ArrayList<Integer>>(); 
1

你需要使用一个Map结构,该用例。

Map<String, Integer[]> personIDs = new HashMap<>(25); 

personIDs.put("Peter", new Integer[]{5,22,7734}); 

personIDs.get("Peter");//returns the array 5,22,7734 
0

首先,我认为你需要一个字符串数组,然后整数长度为52的多维数组。Java是一种非常静态的语言,它不会让你做一些疯狂的事情,比如将整数存储在一个字符串数组中。

String[] volunteerNames = new String [25]; 
int[] volunteerHours = new int [25][52]; 

所有第二,我觉得你真的可以使用一些不错的对象定位在这里,使一个类志愿者,并在其中存储与名称的字符串和INT的为那些小时的数组。

(PS:那么试着搜索一下getter和setters,通常的做法是用private scope声明类变量并定义访问它们的方法,但是我在这里用public scope来保持这个例子的简短)

public class Volunteer { 

    public String name; 
    public int[] hours; 

    Volunteer(String name, int[] hours) { 
     this.name = name; 
     this.hours = hours; 
    } 
} 

第三,如果你真的想像你这样做,我想你应该使用一个地图。

Map<String, Integer[]> volunteersHours = new HashMap<String, Integer[]>(); 
volunteersHours.put("John", new Integer[] {1, 2, 3, 4, etc...}); 

volunteersHours.get("John"); // will return the hours array 
相关问题