2017-04-02 85 views
2

我需要一些帮助,使我的Java方法(getNumGroupsOfSize)工作。应该吻合的阵列“基团”(即共享相同值的连续元素)有多大,然后打印出许多其他团体如何共享该大小。因此,例如,阵列[1,1,1,2,2,2,3,3,3,4,5,6,7]将打印:如何创建计算组有多大是一个数组的方法?

size 1=4 

size 3=3 

,然后将停止运行。

这是我到目前为止有:

import static java.lang.System.*; 
import java.util.Arrays; 
import java.util.Scanner; 

public class ArrayStats { 
    int[] numArray; 
    int number; 

    public ArrayStats(int[] array) { 
    setArray(array); 
    } 

    public void setArray(int[] array) { 
    numArray = array; 
    } 

    public int getNumGroupsOfSize() { 
    int cnt = 0; 
    for (int x = 0; x < numArray.length - 1; x++) { 
    if (numArray[x] == numArray[x + 1]); 
    cnt++; 
    for (int y = 2; y <= 9; y++) { 
     if (cnt == y) 
     number = cnt; 
     else if (cnt == 1) 
     number = 1; 
    } 
    } 
    return number; 
} 

public String toString() { 
    return "size count" + " == " + getNumGroupsOfSize() + Arrays.toString(numArray); 
} 
} 

我敢肯定我的getNumGroupsOfSize不正确编码,但我不知道如何使它发挥作用。我真诚感谢任何可以提供的帮助。如果您需要更多信息,请不要犹豫,以评论。谢谢!

+0

见:http://stackoverflow.com/help/someone-answers – c0der

回答

0

你的方法getNumGroupsSize()没有太大的意义。例如,如果您只存储一个号码,您如何打印所有组?我写了新的方法,它直接打印数字。如果你愿意,你也可以将它们存储在一个数组中。

public void getNumGroupsOfSize() { 
    int cnt = 1; 
    int currentNumber = numArray[0]; 
    for (int x = 0; x < numArray.length - 1; x++) { 
     if (numArray[x] == numArray[x + 1]){ 
      cnt++; 
     } 
     else{ 
      System.out.println(currentNumber + ": " + cnt); 
      currentNumber=numArray[x+1]; 
      cnt=1; 
     } 
    } 
    System.out.println(currentNumber + ": " + cnt); 

} 
0

对于每一个遇到的系列,你要算它的大小和更新对多系列如何拥有这种规模的信息。

因此,您正在使用的int number字段显然不足以实现它,因为它只能保存非常基本的信息。

在你的情况下,你需要有两个相关的信息:对于每个系列的大小,你想知道有这个大小的系列的数量。

一个Map对象应该做的工作。 这将作为该系列的关键尺寸和值有这个尺寸系列的使用数量。

Map<Integer, Integer> occurrenceBySeriesSize = new HashMap<>(); 

在每一个遇到的一系列结束时间,更新与新的计地图:

int serieSize = ...; 

Integer occurrences = occurrenceBySeriesSize.get(serieSize); 
if (occurrences == null){ 
    occurrences = 0; 
} 
occurrenceBySeriesSize.put(serieSize, ++occurrences); 
相关问题