日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

c语言输入字符串的格式不正确的是,关于c#:输入字符串的格式不正确

發(fā)布時(shí)間:2024/9/19 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言输入字符串的格式不正确的是,关于c#:输入字符串的格式不正确 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

我是一個(gè)新的C語(yǔ)言,我有一些基本的Java知識(shí),但是我不能讓這個(gè)代碼正常運(yùn)行。

它只是一個(gè)基本的計(jì)算器,但當(dāng)我運(yùn)行程序vs2008時(shí),會(huì)出現(xiàn)以下錯(cuò)誤:

我做了幾乎相同的程序,但在JAVA中使用jSnand,它工作得很好。

這是C的形式:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace calculadorac

{

public partial class Form1 : Form

{

int a, b, c;

String resultado;

public Form1()

{

InitializeComponent();

a = Int32.Parse(textBox1.Text);

b = Int32.Parse(textBox2.Text);

}

private void button1_Click(object sender, EventArgs e)

{

add();

result();

}

private void button2_Click(object sender, EventArgs e)

{

substract();

result();

}

private void button3_Click(object sender, EventArgs e)

{

clear();

}

private void add()

{

c = a + b;

resultado = Convert.ToString(c);

}

private void substract()

{

c = a - b;

resultado = Convert.ToString(c);

}

private void result()

{

label1.Text = resultado;

}

private void clear()

{

label1.Text ="";

textBox1.Text ="";

textBox2.Text ="";

}

}

有什么問題?有辦法解決嗎?

附:我也試過了

a = Convert.ToInt32(textBox1.text);

b = Convert.ToInt32(textBox2.text);

但它不起作用。

錯(cuò)誤意味著您試圖從中分析整數(shù)的字符串實(shí)際上不包含有效的整數(shù)。

在創(chuàng)建表單時(shí),文本框不太可能立即包含有效的整數(shù),而這正是您獲取整數(shù)值的地方。更新按鈕單擊事件中的a和b會(huì)更有意義(與您在構(gòu)造函數(shù)中的方式相同)。另外,檢查Int.TryParse方法——如果字符串實(shí)際上不包含整數(shù),那么使用起來(lái)就容易多了——它不會(huì)引發(fā)異常,因此更容易從中恢復(fù)。

嘗試轉(zhuǎn)換時(shí),也可能引發(fā)此錯(cuò)誤消息。若要從具有不同CultureInfo的用戶進(jìn)行雙輸入混合,則可以使用Convert.ToDouble(String,?而不僅僅是convert.todouble(字符串)。很難調(diào)試,因?yàn)槌绦驅(qū)⒃谀南到y(tǒng)上工作,但會(huì)向某些用戶拋出錯(cuò)誤,這就是為什么我有一個(gè)方法在服務(wù)器上記錄錯(cuò)誤,并且我很快發(fā)現(xiàn)了這個(gè)問題。

我遇到了這個(gè)確切的異常,只是它與解析數(shù)字輸入無(wú)關(guān)。所以這不是對(duì)OP問題的回答,但我認(rèn)為分享知識(shí)是可以接受的。

我聲明了一個(gè)字符串,并對(duì)其進(jìn)行格式化以用于需要大括號(hào)()的jqtree。您必須使用雙大括號(hào)才能接受為格式正確的字符串:

string measurements = string.empty;

measurements += string.Format(@"

{{label: 'Measurement Name: {0}',

children: [

{{label: 'Measured Value: {1}'}},

{{label: 'Min: {2}'}},

{{label: 'Max: {3}'}},

{{label: 'Measured String: {4}'}},

{{label: 'Expected String: {5}'}},

]

}},",

drv["MeasurementName"] == null ?"NULL" : drv["MeasurementName"],

drv["MeasuredValue"] == null ?"NULL" : drv["MeasuredValue"],

drv["Min"] == null ?"NULL" : drv["Min"],

drv["Max"] == null ?"NULL" : drv["Max"],

drv["MeasuredString"] == null ?"NULL" : drv["MeasuredString"],

drv["ExpectedString"] == null ?"NULL" : drv["ExpectedString"]);

希望這能幫助其他人找到這個(gè)問題,但不分析數(shù)字?jǐn)?shù)據(jù)。

如果不明確驗(yàn)證文本字段中的數(shù)字,則最好使用

int result=0;

if(int.TryParse(textBox1.Text,out result))

現(xiàn)在,如果結(jié)果是成功的,那么您可以繼續(xù)進(jìn)行計(jì)算。

通常,不需要初始化result。

問題

出現(xiàn)錯(cuò)誤的可能原因有:

因?yàn)閠extBox1.Text只包含數(shù)字,但數(shù)字太大/太小

因?yàn)閠extBox1.Text包含:

a)非數(shù)字(除開頭/結(jié)尾的space、開頭的-)和/或

b)代碼的應(yīng)用區(qū)域性中的千個(gè)分隔符,未指定NumberStyles.AllowThousands或指定NumberStyles.AllowThousands但在區(qū)域性中輸入了錯(cuò)誤的thousand separator和/或

c)十進(jìn)制分隔符(不應(yīng)存在于int解析中)

不正常示例:

案例1

a = Int32.Parse("5000000000"); //5 billions, too large

b = Int32.Parse("-5000000000"); //-5 billions, too small

//The limit for int (32-bit integer) is only from -2,147,483,648 to 2,147,483,647

案例2 A)

a = Int32.Parse("a189"); //having a

a = Int32.Parse("1-89"); //having - but not in the beginning

a = Int32.Parse("18 9"); //having space, but not in the beginning or end

案例2 B)

NumberStyles styles = NumberStyles.AllowThousands;

a = Int32.Parse("1,189"); //not OK, no NumberStyles.AllowThousands

b = Int32.Parse("1,189", styles, new CultureInfo("fr-FR")); //not OK, having NumberStyles.AllowThousands but the culture specified use different thousand separator

案例2 C)

NumberStyles styles = NumberStyles.AllowDecimalPoint;

a = Int32.Parse("1.189", styles); //wrong, int parse cannot parse decimal point at all!

看似不好,但實(shí)際上好的例子:

案例2 A)OK

a = Int32.Parse("-189"); //having - but in the beginning

b = Int32.Parse(" 189"); //having space, but in the beginning or end

案例2 B)OK

NumberStyles styles = NumberStyles.AllowThousands;

a = Int32.Parse("1,189", styles); //ok, having NumberStyles.AllowThousands in the correct culture

b = Int32.Parse("1 189", styles, new CultureInfo("fr-FR")); //ok, having NumberStyles.AllowThousands and correct thousand separator is used for"fr-FR" culture

解決

在所有情況下,請(qǐng)使用Visual Studio調(diào)試器檢查textBox1.Text的值,并確保它對(duì)于int范圍具有完全可接受的數(shù)字格式。像這樣:

1234

另外,你可以考慮

使用TryParse而不是Parse,以確保未解析的數(shù)字不會(huì)導(dǎo)致異常問題。

檢查EDOCX1[13]的結(jié)果,如果不是EDOCX1[16]則處理。

int val;

bool result = int.TryParse(textbox1.Text, out val);

if (!result)

return; //something has gone wrong

//OK, continue using val

在我的情況下,我忘記了放雙花括號(hào)逃跑。{{MyObjult}}

您沒有提到您的文本框是否在設(shè)計(jì)時(shí)或現(xiàn)在具有值。當(dāng)窗體初始化時(shí),如果在窗體設(shè)計(jì)期間未將文本框放入文本框,則文本框可能不具有值。通過在desgin中設(shè)置文本屬性,可以在表單設(shè)計(jì)中輸入int值,這樣應(yīng)該可以工作。

我有一個(gè)類似的問題,我用以下方法解決了:

在下面的代碼行中引發(fā)了異常(請(qǐng)參見下面用**修飾的文本):

static void Main(string[] args)

{

double number = 0;

string numberStr = string.Format("{0:C2}", 100);

**number = Double.Parse(numberStr);**

Console.WriteLine("The number is {0}", number);

}

經(jīng)過一番調(diào)查,我意識(shí)到問題在于格式化字符串中包含了一個(gè)美元符號(hào)($),Parse/Tryparse方法無(wú)法解決這個(gè)問題(即剝離)。因此,使用字符串對(duì)象的remove(…)方法,我將行更改為:

number = Double.Parse(numberStr.Remove(0, 1)); // Remove the"$" from the number

此時(shí),parse(…)方法按預(yù)期工作。

這也是我的問題。在我的例子中,我把波斯語(yǔ)號(hào)碼改成拉丁語(yǔ)號(hào)碼,它起作用了。在轉(zhuǎn)換之前還要修剪你的繩子。

PersianCalendar pc = new PersianCalendar();

char[] seperator ={'/'};

string[] date = txtSaleDate.Text.Split(seperator);

int a = Convert.ToInt32(Persia.Number.ConvertToLatin(date[0]).Trim());

與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的c语言输入字符串的格式不正确的是,关于c#:输入字符串的格式不正确的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。