有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java扫描器类在C中做什么#

public void checkInt(Scanner MemberNrSC)
    {
        MemberNrSC = new Scanner(txtMemberNr.getText());
        while (!MemberNrSC.hasNextInt())
        {
            string correctedMemberNr = Interaction.InputBox(null,"Medlemsnummer skal være et nummer, indtast det rigtige");

            if (correctedMemberNr == null)
            {
                MemberNrCancelled = true;
                break;
            }
            txtMemberNr.setText(correctedMemberNr);

            MemberNrSC = new Scanner(txtMemberNr.getText());
            MemberNrCancelled = false;
        }
    }

这是我的java检查器,如果文本框中只有数字

但是,由于C#中没有扫描仪,如何正确转换此方法? 我有我的其他方法需要一个scanner类,但我希望我能在这里得到一些帮助

顺便说一句:我使用的是VisualBasic输入框,因为我不知道C#中是否有类似的方法

提前感谢;-)

/拉斯穆斯 丹麦


共 (3) 个答案

  1. # 1 楼答案

    string Str = txtMemberNr.Text.Trim();
    
                double Num;
    
                bool isNum = double.TryParse(Str, out Num);
    
                if (isNum)
                {
                  // CODE IS HERE
                }
                else
                {
                    MessageBox.Show("Brugernavn skal kun indeholde tal, prøv igen!", "advarsel", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
    

    这是最简单的方法——检查文本框字段中是否有int/string。 我希望你/或有选择权解决这个问题的人

    谢谢你的帮助-但是我不能让它像我想要的那样工作-即使扫描仪的使用很好。。多谢各位

  2. # 2 楼答案

    试试这个吧

    class Scanner : System.IO.StringReader
    {
      string currentWord;
    
      public Scanner(string source) : base(source)
      {
         readNextWord();
      }
    
      private void readNextWord()
      {
         System.Text.StringBuilder sb = new StringBuilder();
         char nextChar;
         int next;
         do
         {
            next = this.Read();
            if (next < 0)
               break;
            nextChar = (char)next;
            if (char.IsWhiteSpace(nextChar))
               break;
            sb.Append(nextChar);
         } while (true);
         while((this.Peek() >= 0) && (char.IsWhiteSpace((char)this.Peek())))
            this.Read();
         if (sb.Length > 0)
            currentWord = sb.ToString();
         else
            currentWord = null;
      }
    
      public bool hasNextInt()
      {
         if (currentWord == null)
            return false;
         int dummy;
         return int.TryParse(currentWord, out dummy);
      }
    
      public int nextInt()
      {
         try
         {
            return int.Parse(currentWord);
         }
         finally
         {
            readNextWord();
         }
      }
    
      public bool hasNextDouble()
      {
         if (currentWord == null)
            return false;
         double dummy;
         return double.TryParse(currentWord, out dummy);
      }
    
      public double nextDouble()
      {
         try
         {
            return double.Parse(currentWord);
         }
         finally
         {
            readNextWord();
         }
      }
    
      public bool hasNext()
      {
         return currentWord != null;
      }
    }
    

    资料来源:https://stackoverflow.com/a/722524/1714342

  3. # 3 楼答案

    怎么样

        public static IEnumerable<string> Scanner(this string tgt, char delim)
        {
            var sb = new StringBuilder();
            foreach (var c in tgt)
            {
                if (c == delim)
                {
                    yield return sb.ToString();
                    sb.Clear();
                }
                else sb.Append(c);
            }
        }