我有一个程序,其中dreamlax与我一起工作,使用Objective-C转换华氏温度,摄氏温度,开尔文温度和朗肯温度刻度之间的温度,但将控制台输入转换为开尔文,然后从开尔文转换为最终用户所需的温标。
现在,我有一个想法,一旦计算完成,我想实现转换温度的最终提示。它目前设置为仅显示如下:
x 度温度范围
其中x =最终转换温度,温度标度=用户希望将温度转换为的标度。
假设最终用户选择华氏温度作为他/她的源温度,希望将212度转换为他/她的目标温度等级摄氏度。转换应该明显等于100摄氏度,但我认为程序会更好地显示如下结果:
212 度 Fahrenheit 100 摄氏度。
现在,我已经将需要替换为粗体的变量替换为值。我很容易解决212和100的值,因为首先有100个变量,并且可以通过将sourceTemp变量的字符串格式化程序替换为212来轻松补救,该变量包含用户原始输入温度。 / p>
现在,华氏温度字符串有点不同。
我试图在原始开关中建立新的东西,如下所示:
switch (prompt)
{
case 1:
//end-user chooses Fahrenheit
[converter setFahrenheitValue:sourceTemp];
sourceTempText = 1;
break;
case 2:
//end-user chooses Celsius
[converter setCelsiusValue:sourceTemp];
sourceTempText = 2;
break;
case 3:
//end-user chooses Kelvin
[converter setKelvinValue:sourceTemp];
sourceTempText = 3;
break;
case 4:
//end-user chooses Rankine
[converter setRankineValue:sourceTemp];
sourceTempText = 4;
break;
}
好的,所以我已经添加到每个不同的情况,将名为sourceTempText的新变量设置为1-4,这是最终用户选择选择他/她的源温度的相同值。
现在,我尝试使用最终开关向最终用户显示最终提示:
switch (prompt2)
{
case 1:
//end-user chooses Fahrenheit
printf("%lf degrees sourceTempText is %lf degrees Fahrenheit\n", sourceTemp, [converter fahrenheitValue]);
break;
case 2:
//end-user chooses Celsius
printf("%lf degrees sourceTempText is %lf degrees Celsius\n", sourceTemp, [converter celsiusValue]);
break;
case 3:
//end-user chooses Kelvin
printf("%lf degrees sourceTempText is %lf degrees Kelvin\n", sourceTemp, [converter kelvinValue]);
break;
case 4:
//end-user chooses Rankine
printf("%lf degrees sourceTempText is %lf degrees Rankine\n", sourceTemp, [converter rankineValue]);
break;
}
我现在不确定,如果我可以将sourceTempText插入字符串中,就像我在这里一样,也许我必须使用字符串格式化程序,但我不确定。这应该是一个简单的解决方案,我只想把它扔出去! :)
P.S。对不起那种凌乱的问题格式,我有点不知道怎么说,所以请在需要时请求澄清。
答案 0 :(得分:2)
将sourceTempText替换为%s,并在switch
语句之上声明可能的字符串,如下所示:
char *scales[4] = { "Fahrenheit", "Celsius", "Kelvin", "Rankine" };
然后在printf
之后为每个sourceTemp,
添加和参数:
printf("%lf degrees %s is %lf degrees Fahrenheit\n",
sourceTemp, scales[prompt-1], [converter fahrenheitValue]);
那是prompt-1
因为计数从零开始,你从1开始。
ps。我现在看到您设置了sourceTempText = 1/2/3/4;
- 我刚刚使用了prompt
,因为它具有相同的值。你可以做的是设置
char *scales[5] = { "Error!", "Fahrenheit", "Celsius", "Kelvin", "Rankine" };
并使用scales[sourceTempText]
,同时确保在switch
,sourceTempText = 0
之前。这将成为输入清理的一个很好的例子:无论用户设法放入prompt
,您的程序将始终显示有效文本。