我对编程非常陌生,我正在尝试创建一个从Celsius到Fahrenheit到Kelvin的转换器。用户输入他们想要在2个输入框中转换的值(以摄氏度为单位),并使用循环创建表。输出摄氏量的第一组数据看起来很棒但是第二个数据流(华氏度)只输出一个摄氏度值,这是摄氏循环中最终nuber的转换值。
<form name="calculator" action="" method="post">
From: <input class="inputbox" type="number" name="one" value="" /><br />
<p>to</p><br>
To: <input class="inputbox" type="number" name="two" value="" /><br />
<input type="submit" class="submit" name="submit" value="Get Conversions!" />
</form>
<br>
<table border='1' cellpadding='5px'>
<tr>
<th>Degrees Celsius</th>
<?php
if ($_POST['submit']) {
$one = $_POST['one'];
$two = $_POST['two'];
}
if ($two < $one) {
echo "<p>Please put the lowest number in the first input box.</p>";
} else if ($one < (-273) OR $two < (-273)) {
echo "<p> Tempature cant go below -273 Celsius (0 kelvin), please enter higher values.</p>";
} else {
$c = $one - 1;
do {
$c++;
echo "<td>" . $c . "</td>";
} while ($c < $two);
}
?>
</tr>
<tr>
<th>Degrees Fahrenheit</th>
<?php
$f = (1.8 * $c) + 32;
do {
$c++;
echo "<td>" . $f . "</td>";
} while ($c < $two);
$k = $x - 273;
?>
</tr>
</table>
答案 0 :(得分:1)
您的代码中有2个问题。
一个问题是你只分配c一次,当你运行第一次时,它计算C up然后当你到达第二次do {} while()它已经准备好了最多。
你应该&#34;重置&#34; C之后的第一个while循环:
<th>Degrees Fahrenheit</th>
<?php
$c = $one - 1;
其次你只计算你的f变量一次,你应该为它做一个函数(在这种情况下可能有点过分)或者在while循环中移动你的f计算,你的代码的最后一部分就像是这个 华氏度
<?php
$c = $one - 1;
do {
$f = (1.8 * $c) + 32;
$c++;
echo "<td>" . $f . "</td>";
} while ($c < $two);
$k = $x - 273;
?>
</tr>