C#时间计算器将字符串秒、分、时、日转换为无时间跨度
我是一个学生,在这个程序提示中,我需要创建一个包含秒数输入的程序,当按下计算按钮时,秒数将显示,并将其转换为分钟、小时和天 我知道我的格式不正确,我已经通读了我的文本,试图找到一些与我的程序有远程关联的东西,但我很难找到它 有人能告诉我哪里出了问题,为什么 我想再次强调,我仍在学习C#,还没有达到时间跨度。因此,这需要在字符串转换以及某种if语句中进行 请提供一个解释,因为我想得到这个窍门。我还需要用它进行输入验证,我已经在下面进行了尝试 这是我的密码:C#时间计算器将字符串秒、分、时、日转换为无时间跨度,c#,string,int,calculation,C#,String,Int,Calculation,我是一个学生,在这个程序提示中,我需要创建一个包含秒数输入的程序,当按下计算按钮时,秒数将显示,并将其转换为分钟、小时和天 我知道我的格式不正确,我已经通读了我的文本,试图找到一些与我的程序有远程关联的东西,但我很难找到它 有人能告诉我哪里出了问题,为什么 我想再次强调,我仍在学习C#,还没有达到时间跨度。因此,这需要在字符串转换以及某种if语句中进行 请提供一个解释,因为我想得到这个窍门。我还需要用它进行输入验证,我已经在下面进行了尝试 这是我的密码: private void Calcula
private void CalculateButton_Click(object sender, EventArgs e)
{
int totalSeconds, minutes, hours, days;
int secondsInDay = 60 * 60 * 24;
int secondsInHour = 60 * 60;
int secondsInMinute = 60;
if (int.TryParse(secondsInputTextBox.Text, out totalSeconds))
{
if (totalSeconds > secondsInDay)
{
days = totalSeconds / secondsInDay;
totalSeconds = totalSeconds - (days * secondsInDay);
daysTextBox.Text = days.ToString();
}
if (totalSeconds > secondsInHour)
{
hours = totalSeconds / secondsInHour;
totalSeconds = totalSeconds - (hours * secondsInHour);
hoursTextBox.Text = hours.ToString();
}
if (totalSeconds > secondsInMinute)
{
minutes = totalSeconds / secondsInMinute;
totalSeconds = totalSeconds - (minutes * secondsInMinute);
minutesTextBox.Text = minutes.ToString();
}
else
{
secondsTextBox.Text = totalSeconds.ToString();
}
}
else
{
MessageBox.Show("Incorrect input. Please use a number.");
}
评论:
minutesTextBox.Text = minutes.ToString();
<Button Width="100" Height="50" Click="CalculateButton_Click" Margin="53,44,564,226"/>
<TextBox Name="inputTextBox" Height="50" Width="100" Margin="298,44,319,226"/>
<TextBox Name="secondsTextBox" Height="50" Width="100" Margin="574,233,43,37"/>
<TextBox Name="minutesTextBox" Height="50" Width="100" Margin="392,233,225,37"/>
<TextBox Name="hoursTextBox" Height="50" Width="100" Margin="198,233,419,37"/>
<TextBox Name="daysTextBox" Height="50" Width="100" Margin="53,233,564,37"/>
这个解决方案并不完美。一个有用的练习是加载项验证、加载项标签和清理xaml,或者将其转换为Windows窗体应用程序。我在后面添加了else语句,但是每个else语句都与其上面的if语句相关联。这在逻辑上与不同,如果我建议将此过程分成不同的区域-执行转换算法的区域和在UI中分配值的区域 要将总的_秒值分解为天、小时、分钟和秒,通常需要使用(a)整数除法和(b)余数(%)运算 (说明性代码示例…)
//计算值
天数=总秒数/天数中的秒数;
days\u rem=总秒数%NUM\u秒数(以天计);
小时=日/秒/小时;
小时数=天数%NUM秒数(单位:小时);
分钟=小时每分钟/数秒每分钟;
分钟数=小时数%NUM秒数(单位:分钟);
秒=分钟\u rem;
//将文本框设置为实际值
daysTextBox.Text=days.ToString();
hoursTextBox.Text=hours.ToString();
minutesTextBox.Text=minutes.ToString();
secondsTextBox.Text=seconds.ToString();
//空白零值
如果(天数<1)
{
daysTextBox.Text=null;
如果(小时<1)
{
hoursTextBox.Text=null;
如果(分钟<1)MinutesExtbox.Text=null;
}
}
我对消隐行为不是很清楚,但我假设我已经捕获了消隐量到最小非零量时所需的内容,并且在所有情况下都留有秒。所以我要澄清的是,代码的目的是我有一个文本输入,有四个标签输出,分别为秒、分钟、,几小时和几天。当我按下calculate时,第一个文本框中的秒数(比如120秒)表示为秒、分钟、小时和天。所以秒会显示120,分2,小时0和天0。我明白了。那么,根据需要修改逻辑。其他的几点应该仍然有用。事实上,你知道吗。我刚刚意识到提示需要输入“135秒”之类的内容,并将其转换为0天、0小时、2分钟和15秒。我道歉。我相信你给了我一个正确的密码。这是一个漫长的一天,试图与此工作。我吃了这道菜觉得很累,不用担心。如果你觉得它解决了你的问题,请考虑接受它作为答案。谢谢,祝你好运。好的,我测试了这个,我认为我们走对了方向。我的问题是,如果限制应该在60秒之后,它被转换成1分钟,60分钟之后它被转换成1小时,等等,我需要包括输入验证吗?我需要包括try-else语句来清除异常。(比如说,如果有人输入字母而不是数字)这就是为什么我尝试使用if-else-if语句或switch语句。我希望这是有意义的。我很困惑,也很新,所以我很感谢你的澄清。
int.minutesTextBox.Text
minutesTextBox.Text = minutes.ToString();
<Button Width="100" Height="50" Click="CalculateButton_Click" Margin="53,44,564,226"/>
<TextBox Name="inputTextBox" Height="50" Width="100" Margin="298,44,319,226"/>
<TextBox Name="secondsTextBox" Height="50" Width="100" Margin="574,233,43,37"/>
<TextBox Name="minutesTextBox" Height="50" Width="100" Margin="392,233,225,37"/>
<TextBox Name="hoursTextBox" Height="50" Width="100" Margin="198,233,419,37"/>
<TextBox Name="daysTextBox" Height="50" Width="100" Margin="53,233,564,37"/>
private void CalculateButton_Click(object sender, RoutedEventArgs e)
{
daysTextBox.Text = null;
hoursTextBox.Text = null;
int totalSeconds, minutes, hours, days;
int secondsInDay = 60 * 60 * 24;
int secondsInHour = 60 * 60;
int secondsInMinute = 60;
int.TryParse(inputTextBox.Text, out totalSeconds);
if (totalSeconds > (secondsInDay))
{
days = totalSeconds / (secondsInDay);
totalSeconds = totalSeconds - (days * secondsInDay);
daysTextBox.Text = days.ToString();
}
else daysTextBox.Text = null;
if (totalSeconds > (secondsInHour))
{
hours = totalSeconds / (secondsInHour);
totalSeconds = totalSeconds - (hours * secondsInHour);
hoursTextBox.Text = hours.ToString();
}
else hoursTextBox.Text = null;
if (totalSeconds > secondsInMinute)
{
minutes = totalSeconds / secondsInMinute;
totalSeconds = totalSeconds - (minutes * secondsInMinute);
minutesTextBox.Text = minutes.ToString();
}
else minutesTextBox.Text = null;
if (totalSeconds > 0)
secondsTextBox.Text = totalSeconds.ToString();
else secondsTextBox.Text = null;
}
//Calculate values
days = total_seconds / NUM_SECONDS_IN_DAY;
days_rem = total_seconds % NUM_SECONDS_IN_DAY;
hours = days_rem / NUM_SECONDS_IN_HOUR;
hours_rem = days_rem % NUM_SECONDS_IN_HOUR;
minutes = hours_rem / NUM_SECONDS_IN_MINUTE;
minutes_rem = hours_rem % NUM_SECONDS_IN_MINUTE;
seconds = minutes_rem;
//Set textboxes to actual values
daysTextBox.Text = days.ToString();
hoursTextBox.Text = hours.ToString();
minutesTextBox.Text = minutes.ToString();
secondsTextBox.Text = seconds.ToString();
//Blank zero values
if (days < 1)
{
daysTextBox.Text = null;
if (hours < 1)
{
hoursTextBox.Text = null;
if (minutes < 1) minutesTextBox.Text = null;
}
}