gpt4 book ai didi

c - Objective-C 字符串,字符串格式化程序

转载 作者:行者123 更新时间:2023-11-30 14:30:17 25 4
gpt4 key购买 nike

我有一个程序,dreamlax 与我一起工作了很多,它使用 Objective-C 在华氏温度、摄氏温度、开尔文温度和兰金温标之间转换温度,但将控制台输入转换为开尔文温度,然后从开尔文温度转换为开尔文温度。最终用户所需的温标。

现在,我有一个想法,我想在计算完成后实现转换温度的最终提示。当前设置为仅显示如下:

x温标

其中 x = 最终转换温度,温度刻度 = 用户希望将其温度转换为的刻度。

假设最终用户选择华氏度作为他/她的源温度,希望将 212 度转换为他/她的目标摄氏温标。显然,转换应该等于 100 摄氏度,但我认为程序最好像这样显示结果:

212华氏度100 摄氏度。

现在,我已经将需要用变量替换的值以粗体显示。我很容易解决了 212 和 100 值,因为 100 变量已经存在,并且 212 可以通过用 sourceTemp 变量的字符串格式化程序替换它来轻松修复,该变量包含用户原始输入的温度。

现在,华氏度字符串有点不同。

我尝试在原始交换机中建立一些新的东西,如下所示:

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 插入到字符串中,相反,也许我必须使用字符串格式化程序,但我不确定。这应该是一个简单的修复,我只是想把它扔在这里! :)

附注抱歉,问题格式困惑,我有点不知道如何表达它,所以如果需要,请要求澄清。

最佳答案

将 sourceTempText 替换为 %s,并在 switch 语句上方声明可能的字符串,如下所示:

char *scales[4] = { "Fahrenheit", "Celsius", "Kelvin", "Rankine" };

然后在 sourceTemp 之后为每个 printf 添加参数,如下所示:

printf("%lf degrees %s is %lf degrees Fahrenheit\n",
sourceTemp, scales[prompt-1], [converter fahrenheitValue]);

这是 prompt-1,因为计数从 0 开始,而您从 1 开始。

<小时/>

ps. 我现在看到您设置了 sourceTempText = 1/2/3/4; - 我刚刚使用了 prompt,因为它有相同的值。你能做的就是设置

char *scales[5] = { "Error!", "Fahrenheit", "Celsius", "Kelvin", "Rankine" };

并使用scales[sourceTempText],同时确保在切换之前,sourceTempText = 0。这将成为输入清理的一个很好的例子:无论用户在提示中输入什么内容,您的程序都将始终显示有效的文本。

关于c - Objective-C 字符串,字符串格式化程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3454571/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com