if 语句 - 在 TypeScript 中将三个输入数字按升序排列
我必须用 TypeScript 编写一个程序,将 HTML 中三个输入的三个数字进行排序。这是我到目前为止所做的:
const lego: HTMLButtonElement = document.getElementById("sorter") as HTMLButtonElement
const z1input: HTMLInputElement = document.getElementById("zahl1") as HTMLInputElement
const z2input: HTMLInputElement = document.getElementById("zahl2") as HTMLInputElement
const z3input: HTMLInputElement = document.getElementById("zahl3") as HTMLInputElement
lego.addEventListener("click", () => {
const z1: number = Number(z1input.value);
const z2: number = Number(z2input.value);
const z3: number = Number(z3input.value);
while (z1 > z2 && z1 > z3 ) {
if (z2 > z3)
{
document.getElementById("output").innerText =
"Sortierte Reihenfolge:" + z1 + z2 + z3
}
if (z3 > z2)
{
document.getElementById("output").innerText =
"Sortierte Reihenfolge:" + z1 + z3 + z2
}
if (z2 == z3)
{
document.getElementById("output").innerText =
"Sortierte Reihenfolge:" + z1 + z2 + z3
}
}
while (z2 > z1 && z2 > z1 ) {
if (z1 > z3)
{
document.getElementById("output").innerText =
"Sortierte Reihenfolge:" + z2 + z1 + z3
}
if (z3 > z1)
{
document.getElementById("output").innerText =
"Sortierte Reihenfolge:" + z2 + z3 + z1
}
if (z1 == z3)
{
document.getElementById("output").innerText =
"Sortierte Reihenfolge:" + z2 + z1 + z3
}
}
while (z3 > z1 && z3 > z2 ) {
if (z1 > z2)
{
document.getElementById("output").innerText =
"Sortierte Reihenfolge:" + z3 + z1 + z3
}
if (z2 > z1)
{
document.getElementById("output").innerText =
"Sortierte Reihenfolge:" + z3 + z2 + z1
}
if (z1 == z2)
{
document.getElementById("output").innerText =
"Sortierte Reihenfolge:" + z3 + z1 + z3
}
}
})
})
但是当我按下按钮时,我的网站就崩溃了……我的循环正确吗?
这是一个大学项目,所以我必须用循环来做。
答案#1
你并没有在任何地方改变这些数字的值。这意味着,一旦你进入其中一个 while 循环,你就会一直停留在那里,永远无法退出。
这就是你的网站崩溃的原因。
关于解决方案,你几乎没说你需要如何解决这个问题,如果要求只是使用循环,你可以实现类似选择算法的东西(有时也叫最小/最大排序)。
答案#2
循环不应该这样使用,如果你寻求帮助,你也应该报告错误日志。无论如何,我想你的网页之所以崩溃,是因为那是三个无限循环。
如果你必须用循环来做,你可以用它们来排序数字,或者就像这样打印它们:
const lego: HTMLButtonElement = document.getElementById("sorter") as HTMLButtonElement
const z1input: HTMLInputElement = document.getElementById("zahl1") as HTMLInputElement
const z2input: HTMLInputElement = document.getElementById("zahl2") as HTMLInputElement
const z3input: HTMLInputElement = document.getElementById("zahl3") as HTMLInputElement
lego.addEventListener("click", () => {
const z1: number = Number(z1input.value);
const z2: number = Number(z2input.value);
const z3: number = Number(z3input.value);
const array : number[] = [z1, z2, z3]
array.sort()
let index = 0
document.getElementById("output").innerText = "Sortierte Reihenfolge: "
while(index < array.length){
document.getElementById("output").innerText += `${array[index]} `
index++
}
})
