我正在用 C# 开发一个语音识别程序,并且我已经编译了几行代码,当我说“电池电量”时,它们会说出当前的电池电量。
if (e.Result.Text.ToLower() == "battery level")
{
System.Management.ManagementClass wmi = new System.Management.ManagementClass("Win32_Battery");
var allBatteries = wmi.GetInstances();
String estimatedChargeRemaining = String.Empty;
foreach (var battery in allBatteries)
{
estimatedChargeRemaining = Convert.ToString(battery["EstimatedChargeRemaining"]);
}
JARVIS.Speak("The Power Level Is At: " + estimatedChargeRemaining + "% sir");
return;
}
在其中我想创建另一个 if
当电池电量低于 25% 时提醒我的声明。如何才能做到这一点?我猜它会类似于“if estimatedChargeRemaining < 25 then JARVIS.Speak("Warning, Battery level has dropped below 25%")
但我不太确定。
最佳答案
我不确定 battery["EstimatedChargeRemaining"]
返回什么格式,但似乎您可以将其转换为 int 而不是字符串。
int batteryLevel = Convert.ToInt32(battery["EstimatedChargeRemaining"]);
if(batteryLevel < 25)
JARVIS.Speak("Warning, Battery level has dropped below 25%");
您可以稍后使用该batteryLevel
变量
JARVIS.Speak("The Power Level Is At: " + batteryLevel.ToString() + "% sir");
不确定这是否是有意的,但您的 foreach
循环意味着您只能获取 allBatteries
中最后一个值的电池信息。之前的所有值都将被覆盖。
编辑评论(您应该添加错误处理)
if (e.Result.Text.ToLower() == "battery level")
{
System.Management.ManagementClass wmi = new System.Management.ManagementClass("Win32_Battery");
var allBatteries = wmi.GetInstances();
//String estimatedChargeRemaining = String.Empty;
int batteryLevel = 0;
foreach (var battery in allBatteries)
{
batteryLevel = Convert.ToInt32(battery["EstimatedChargeRemaining"]);
}
if(batteryLevel < 25)
JARVIS.Speak("Warning, Battery level has dropped below 25%");
else //Guessing you want else
JARVIS.Speak("The Power Level Is At: " + batteryLevel.ToString() + "% sir");
return;
}
关于c# - 电池电量 IF 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18125363/