需要帮助生成警报的唯一请求代码

时间:2014-06-11 05:02:39

标签: android unique alarm android-alarms

我的应用程序结构就像是,有1000个masjids / mosques,每个masjid都被赋予了一个独特的id,如1,2,3,4 ..... 1000。现在每个清真寺都有七个与之相关的警报,我希望为每个警报生成一个唯一的请求代码,以便它们不会相互重叠,

以下是代码:

//note integer NamazType has range 0 to 5
       public int generateRequestCodeForAlarm(int MasjidID,int NamazType )
        {
                return (MasjidID *(10)) + (namazType);
        }

此代码是否有效?

4 个答案:

答案 0 :(得分:2)

你可以简单地连接masjidID和namaztype(或者特别是namaz ID)。这将始终是唯一的。

    public int generateRequestCodeForAlarm(int MasjidID,int NamazType )
    {
            return Integer.ParseInt(String.valueOf(MasjidID)+""+NamazType)
    }

答案 1 :(得分:0)

使用Random类:

尝试这样:

//note integer NamazType has range 0 to 5
public int generateRequestCodeForAlarm(int MasjidID, int NamazType)
{
    return (MasjidID * (Math.abs(new Random().nextInt()))) + (namazType);
}

答案 2 :(得分:0)

它肯定会起作用。

public int generateRequestCodeForAlarm(int MasjidID,int NamazType )
    {
            return (MasjidID*(10)) + (NamazType );
    }

输出:

查看this

答案 3 :(得分:-1)

如果MasjidID和NamazType是唯一的,那么

Integer.parseInt( MasjidID + "" + NamazType  ); 

足以做到这一点!

示例:

Masjid ID = 96, Namaz type = 1, Unique no = 961
MasjidId  = 960, Namaz type = 1, Unique no = 9601
MasjidID  = 999, Namaz type = 6, Unique no = 9996

我找不到任何重复的方式。但是,它与

非常相似
(MasjidID * 10) + NamazType

无论MasjidID和NamazType如何,如果需要生成一个随机数,可以使用它。

public class NoRepeatRandom {

  private int[] number = null;
  private int N = -1;
  private int size = 0;
  public NoRepeatRandom(int minVal, int maxVal)
  {
    N = (maxVal - minVal) + 1;
    number = new int[N];
    int n = minVal;
    for(int i = 0; i < N; i++)
      number[i] = n++;
    size = N;
  }

  public void Reset() { size = N; }

   // Returns -1 if none left
  public int GetRandom()
  {
    if(size <= 0) return -1;
    int index = (int) (size * Math.random()); 
  int randNum = number[index];

    // Swap current value with current last, so we don't actually
    // have to remove anything, and our list still contains everything
    // if we want to reset
    number[index] = number[size-1];
    number[--size] = randNum;

    return randNum;
  }
}