【问题标题】:Char to int with a value more than 9Char 到 int 值大于 9
【发布时间】:2014-04-22 19:06:12
【问题描述】:

我有一个用于加载某些关卡的字符串数据,在完成关卡后,一些代码应该增加字符串的最后一个字符以正确加载下一个关卡。

例如:

String levelName = "Level_002_001";

完成关卡后,它应该创建一个字符串 = "Level_002_002",它与下面的代码一起工作,直到 "Level_002_009",并且在加载第 10 个关卡时,它会引发错误。

代码:

string sceneName = Application.loadedLevelName;
char[] chars = sceneName.ToCharArray();
int level = chars[chars.Length - 1] - '0';
ManageLevelData.SaveLevel(level, ScoreController.Percentage());
chars[chars.Length - 1] = (char)(((int)'0')+ level + 1);
Application.LoadLevel(new string(chars));

在人类语言中:我将字符串的每个字符分隔在一个数组中,然后取出最后一个 char 并将其转换为 int,然后将其加 1,然后将它们全部粘合在一起。

【问题讨论】:

  • 也许是chars[chars.Length - 1]++?也许ManageLevelData.SaveLevel() 不喜欢10 或Application.LoadLevel("Level_002_00:") 不好?
  • 我认为您的回答会在 ascii char 中添加一个 int,并且由于 ascii char 只能达到 9,因此我可能不得不添加另一个 char……不,这两个函数都只是读取一个字符串,据我所知,解析方法是合法的,但感谢您的回答:)
  • 看来您想要增加“..._009”并转到“..._010”而不是“..._00:”。代码最终需要在递增“..._009”、“..._999”或“Level_999_999”时处理 textual 数学溢出。我建议解析所有可能参与level的数字,递增level,然后从整个字符串中重新解析。

标签: string char type-conversion ascii


【解决方案1】:
   char[] chars = sceneName.ToCharArray();
   int level = chars[chars.Length - 1] - '0';
   if(level >= 9)
   {
       int previousChar = chars[chars.Length - 2] - '0';
       previousChar++;
       chars[chars.Length - 2] = (char)(((int)'0') + previousChar);
       chars[chars.Length - 1] = '0';
       Debug.Log(new string(chars));
   }
   else
      chars[chars.Length - 1] = (char)(((int)'0') + level + 1);

成功了,如果我没记错的话,只能工作到 99,我真的希望有一个功能。 :O

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-12
    • 1970-01-01
    • 2018-06-05
    • 2020-07-08
    • 1970-01-01
    • 2014-08-25
    • 2019-09-30
    • 1970-01-01
    相关资源
    最近更新 更多