Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#输入字符串的格式不正确_C# - Fatal编程技术网

C#输入字符串的格式不正确

C#输入字符串的格式不正确,c#,C#,正在将文本框解析为int,以进入incrementHour方法,如图所示 if (txtHourPlus.Text != String.Empty) { time1.incrementHour(int.Parse(txtHour.Text)); } 在time类中:(time1对象类) public int incrementHour(int step) { 如果(步骤>0&&小时>甚至不想说) 然而,正如有人已

正在将文本框解析为int,以进入incrementHour方法,如图所示

if (txtHourPlus.Text != String.Empty)
            {
                time1.incrementHour(int.Parse(txtHour.Text));

            }
在time类中:(time1对象类)

public int incrementHour(int step)
{
如果(步骤>0&&小时<24)
{
//步骤=步骤%小时;
小时=(小时+步长)%24;
时间。添加小时(小时);
返程时间;
}//if结束
其他的
{
MessageBox.Show(“请输入正数”);
返回0;
}//别有用心
}//递增小时结束
我不知道为什么会出现这个错误。我正在将其转换为相应的数据类型。因为它接受一个int变量


好吧,我得到了它的值(小错误>>甚至不想说)
然而,正如有人已经说过的那样,这个方法可能需要改进,因为我正试图更改我首先得到的日期时间值,并加上一个小时或减法等等。

例如,如果有人在文本框中键入“foo”,就会发生这种情况。您应该改为使用,它允许您在不引发异常的情况下检测错误

我注意到您实际上没有使用方法的返回值,就像您没有使用
time.AddHours
的返回值一样。您知道
DateTime.AddHours
实际上并没有修改您调用它的值,不是吗?(事实上,我怀疑您需要对该方法进行相当多的调整……它有各种潜在的问题,具体取决于您试图做的事情。)


(最后,我将方法名称更改为
IncrementHour
,以符合.NET约定。)

例如,如果有人在文本框中键入“foo”,就会发生这种情况。您应该改为使用,它允许您在不引发异常的情况下检测错误

我注意到您实际上没有使用方法的返回值,就像您没有使用
time.AddHours
的返回值一样。您知道
DateTime.AddHours
实际上并没有修改您调用它的值,不是吗?(事实上,我怀疑您需要对该方法进行相当多的调整……它有各种潜在的问题,具体取决于您试图做的事情。)


(最后,我将方法名称更改为
IncrementHour
,以符合.NET约定。)

如果您的输入不能作为整数解析,尝试解析它将引发异常。验证或使用Int32.TryParse()。验证或使用Int32.TryParse()。输入错误(?)

您正在测试txtHourPlus是否为空,但随后解析并传递txtHour。输入错误(?)

更改代码的这一部分:

if (txtHour.Text != String.Empty)
{
    int parsedValue;

    if (int.TryParse(txtHour.Text, out parsedValue))
    {
        time1.incrementHour(parsedValue);
    }
    else
    {
        // non-numeric value was entered into the textbox - handle accordingly.
    }
}

更改代码的这一部分:

if (txtHour.Text != String.Empty)
{
    int parsedValue;

    if (int.TryParse(txtHour.Text, out parsedValue))
    {
        time1.incrementHour(parsedValue);
    }
    else
    {
        // non-numeric value was entered into the textbox - handle accordingly.
    }
}


txtHour.Text不是有效的int.Ta da!你能发布堆栈跟踪吗?我假设错误来自
int.parse
。您应该更喜欢使用String.IsNullOrWhite空格,而不是与String.Empty:)@Muad'Dib:您是否见过TextBox。Text返回null?如果真的发生了,我会非常惊讶。。。如果是的话,我想我更愿意了解一下……也许输入字符串的格式不正确。就像错误消息一样。txtHour.Text不是有效的int.Ta da!你能发布堆栈跟踪吗?我假设错误来自
int.parse
。您应该更喜欢使用String.IsNullOrWhite空格,而不是与String.Empty:)@Muad'Dib:您是否见过TextBox。Text返回null?如果真的发生了,我会非常惊讶。。。如果是的话,我想我更愿意了解一下……也许输入字符串的格式不正确。类似于错误消息。int test=0;bool result=int.TryParse(“某个字符串”,输出测试);>。>我并不完全意识到这一点。我所要做的就是用这个程序增加小时和分钟。我只是在做这件事时遇到了一个问题。int test=0;bool result=int.TryParse(“某个字符串”,输出测试);>。>我并不完全意识到这一点。我所要做的就是用这个程序增加小时和分钟。我只是有一个问题就是这么做。/脸掌是的,那是我的问题。现在,我正在努力获取我传递的值,以实际更改时间。+1是唯一发现真正错误的人,而不仅仅是坏习惯。/是的,这是我的问题。现在,我正在努力获取我传递的值,以实际更改时间。+1是唯一发现真正错误的人,而不仅仅是坏习惯。