Java 将字母数字转换为ascii并递增

Java 将字母数字转换为ascii并递增,java,ascii,Java,Ascii,如何将3个字母和3个数字转换成ascii码,并将它们增加1…这是旧的下一个车牌问题。谁能给我一个正确的方向 我想 char c='A'; int no=97; System.out.println( (++c) + " " + (char)++no); 您可以通过将字母和数字的字符串转换为char[]来实现这一点。一旦你完成了,你就可以在数组上迭代,并且每个数组都迭代。你正在生成这样的字符串:“AAA000”,“AAA001”,“…”,“AAA999”,“AAB000”,“…”,“

如何将3个字母和3个数字转换成ascii码,并将它们增加1…这是旧的下一个车牌问题。谁能给我一个正确的方向

我想

  char c='A';
  int no=97;
  System.out.println( (++c) + " " + (char)++no);

您可以通过将字母和数字的
字符串
转换为
char[]
来实现这一点。一旦你完成了,你就可以在数组上迭代,并且每个数组都迭代。

你正在生成这样的字符串:“AAA000”,“AAA001”,“…”,“AAA999”,“AAB000”,“…”,“ZZZ999”,对吗

把它想象成一个数字系统,不同的列不使用相同的数字。如果我们的号码是10-10-10-10,你的号码是26-26-26-10-10-10。使用递增的基础整数,然后依次将模除以10、10、10、26、26,将其转换为字母和数字

要将车牌转换为其基本整数,请将字母位置(a==0、B==1等)乘以26的适当幂,将数字乘以10的适当幂,然后将它们相加。

String str=“abc123”
String str = "abc123"
String newstr = "";
for(int i=0; i<str.length(); i++) {
    newstr += (char) (str.charAt(i) + 1);
}
// newstr now is "bcd234"
字符串newstr=“”;
对于(int i=0;i生成车牌号的简单方法是使用一个递增的整数变量和三个对应于字母的整数变量,类似于这样,请在适当的地方进行修改。其中一个技巧是使用String.format,它可以在整数和对应字符之间无缝转换(也可以使用强制类型转换。)

类生成器{
int minLetter=“A”字符(0);
int maxLetter=“Z”.字符(0);
int curLetter1=minLetter;
int curLetter2=minLetter;
int curLetter3=最小字母;
整数=0;
公共字符串生成器板(){
字符串板=字符串。格式(“%c%c%c-%03d”),卷曲字符1,
curLetter2,curLetter3,数字);
增量();
回流板;
}
私有无效增量(){
数字++;
如果(数字=1000){
数字=0;
curLetter1++;
}
如果(curLetter1>maxLetter){
curLetter1=最小字母;
curLetter2++;
}
如果(curLetter2>maxLetter){
curLetter2=最小字母;
curLetter3++;
}
如果(curLetter3>maxLetter){
curLetter3=最小字母;
数字++;
}
}
公共静态void main(字符串[]args){
plateGenerator pg=新的plateGenerator();
对于(int i=0;i<50000;i++){
System.out.println(pg.generatePlate());
}
}
}

这个问题实际上有实际的应用程序。我编写了一个帐号生成器,它的工作原理与此类似。我将其修改为您的格式。给您

public class LicenseNumber {

    int numericSum;
    int letterSum;

    public LicenseNumber() {
        numericSum = letterSum = 0;
    }

    public LicenseNumber(String number) {
        if (!number.matches("^[A-Za-z]{3}[0-9]{3}$"))
            throw new IllegalArgumentException("Number doesn't match license format");
        numericSum = Integer.valueOf(number.substring(3));
        letterSum = value(number, 0) * 26 * 26 + value(number, 1) * 26 + 
           value(number, 2);
    }

    public void increment() {
        increment(1);
    }

    public void increment(int inc) {
        numericSum += inc;
        if (numericSum >= 1000) {
            letterSum += numericSum/1000;
            numericSum %= 1000;         
        }
    }

    public String toString() {
        char[] letters = new char[3];
        int n = letterSum;
        for (int i = 0; i < 3; i++) {
            letters[2-i] = (char)('A' + (n%26));
            n /= 26;
        }
        return new String(letters) + String.format("%03d", numericSum);
    }

    private int value(String s, int index) {
        return Character.toUpperCase(s.charAt(index)) - 'A';
    }

/**
     * Example
     */
    public static void main(String[] args) {

        LicenseNumber lic = new LicenseNumber("ABC999");
        for (int i=0; i < 100; i++) {
            lic.increment(500);
            System.out.println(lic);
        }
    }

}
公共类许可证号码{
整数;
整数信和;
公共牌照号码(){
numericSum=lettsum=0;
}
公共许可证编号(字符串编号){
如果(!number.matches(“^[A-Za-z]{3}[0-9]{3}$”)
抛出新的IllegalArgumentException(“编号与许可证格式不匹配”);
numericSum=整数.valueOf(number.substring(3));
信和=值(数字,0)*26*26+值(数字,1)*26+
数值(数字,2);
}
公共空间增量(){
增量(1);
}
公共无效增量(国际公司){
numericSum+=inc;
如果(数值总和>=1000){
信和+=数值单位/1000;
numericSum%=1000;
}
}
公共字符串toString(){
字符[]个字母=新字符[3];
int n=信和;
对于(int i=0;i<3;i++){
字母[2-i]=(char)('A'+(n%26));
n/=26;
}
返回新字符串(字母)+String.format(“%03d”,numericSum);
}
私有int值(字符串s,int索引){
返回字符.toUpperCase(s.charAt(index))-'A';
}
/**
*范例
*/
公共静态void main(字符串[]args){
LicenseNumber lic=新的许可证号码(“ABC999”);
对于(int i=0;i<100;i++){
增量(500);
系统输出打印项次(lic);
}
}
}

我还没有看到任何用于递增字母数字字符串的通用解决方案的代码示例,所以我想我会发布我的代码示例

这将获取任意长度的字符串和任意字母数字字符顺序,将其转换为大写并递增1(就好像它是基数26)。如果数字换行,它也会引发异常。换行是否有意义取决于您自己

private static string IncrementAlphaNumericString(string alphaNumericString)
{
    char[] an = alphaNumericString.ToCharArray();

    int i = an.Length - 1;
    while (true)
    {
        if (i <= 0)
            throw new Exception("Maxed out number!!!");

        an[i]++;

        if (an[i] - 1 == '9')
        {
            an[i] = 'A';
        }

        if (an[i] - 1 == 'Z')
        {
            an[i] = '0';
            i--;
            continue;
        }

        return new string(an);
    }
}
私有静态字符串增量alphaNumericString(字符串alphaNumericString)
{
char[]an=alphaNumericString.ToCharArray();
int i=一个长度-1;
while(true)
{
如果(i)
private static string IncrementAlphaNumericString(string alphaNumericString)
{
    char[] an = alphaNumericString.ToCharArray();

    int i = an.Length - 1;
    while (true)
    {
        if (i <= 0)
            throw new Exception("Maxed out number!!!");

        an[i]++;

        if (an[i] - 1 == '9')
        {
            an[i] = 'A';
        }

        if (an[i] - 1 == 'Z')
        {
            an[i] = '0';
            i--;
            continue;
        }

        return new string(an);
    }
}