ค้นหาเว็บไซต์

คำสั่ง 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 คุณก็จะอยู่ตรงนั้นตลอดเวลาและจะไม่ออกไปไหน

นั่นคือเหตุผลที่เว็บไซต์ของคุณล่ม

ตอนนี้เกี่ยวกับวิธีแก้ปัญหา คุณยังไม่ได้พูดมากนักเกี่ยวกับว่าคุณต้องแก้ไขปัญหานี้อย่างไร และถ้าข้อกำหนดคือเพียงแค่ใช้ลูป คุณก็สามารถนำสิ่งที่คล้ายกับอัลกอริทึมการเลือก (บางครั้งเรียกว่าการเรียงลำดับแบบ min/max) มาประยุกต์ใช้ได้

คำตอบ #2

ลูปไม่ได้ถูกออกแบบมาให้ใช้แบบนี้ และคุณควรส่งรายงานข้อผิดพลาดถ้าคุณกำลังขอความช่วยเหลือ ยังไงก็ตาม ผมคิดว่าเว็บไซต์ของคุณล่มเพราะนั่นคือ 3 ลูปไม่รู้จบ

ถ้าคุณต้องทำมันด้วยลูป คุณสามารถใช้ลูปจัดเรียงตัวเลขหรืิอแค่พิมพ์ตัวเลขแบบนี้:

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++
    }

})