Forum Sementara Putera.com

Would you like to react to this message? Create an account in a few clicks or log in to continue.
Forum Sementara Putera.com

Bersama kita perkemaskan forum ini sementara forum asal dalam pemulihan.

Forum putera dah kembali. Masalah sudah berjaya diselesaikan. Sila lawati http://forum.putera.com/tanya


3 posters

    switch pun masalah...tak paham lorr

    avatar
    jeliey
    Ahli Baharu
    Ahli Baharu


    Number of posts : 26
    Registration date : 01/04/2009

    switch pun masalah...tak paham lorr Empty switch pun masalah...tak paham lorr

    Post by jeliey Fri Aug 14, 2009 1:28 pm

    Ape problem ni?aku rasa cam dah btol je...tp ada error:use of unassigned local variable'grading' yg aku bold kan ni...ada sesapa leh tlg x?aku tau dis is so simple, tp aku mmg dh blank sgt2 ni...



    using System;
    using System.Collections.Generic;
    using System.Text;

    namespace MarkGrade
    {
    class MarkGrade
    {
    static void Main(string[] args)
    {
    string mark,grading;

    Console.Write("Please enter your mark:");
    mark=Console.ReadLine();
    //double d = Convert.ToDouble(mark);


    switch (mark)
    {
    case "mark >= 80 && mark <= 100":
    grading="Distinction";
    break;

    case "mark >= 70 && mark < 80":
    grading = "Very Good";
    break;

    case "mark >= 60 && mark< 70":
    grading = "Good";
    break;

    case "mark >= 50&& mark < 60":
    grading = "OK";
    break;

    case "mark >= 40 && mark < 50":
    grading = "Average";
    break;

    case "mark<40":
    grading = "Poor";
    break;
    }
    Console.WriteLine();
    Console.WriteLine(grading);
    Console .ReadLine ();
    }
    }
    }
    avatar
    iluvsomeone
    Ahli Baharu
    Ahli Baharu


    Number of posts : 7
    Registration date : 10/08/2009

    switch pun masalah...tak paham lorr Empty Re: switch pun masalah...tak paham lorr

    Post by iluvsomeone Fri Aug 14, 2009 1:45 pm

    @my thought
    The compiler throw the error because it suspected that "grading" might not being assigned with any value in the end of the process.
    This happen because all the value assigning process only happen in switch clause.

    Try to give an initial value during variable ("grading") declare.
    example:

    string mark;
    string grading = "temp";
    betik
    betik
    Ahli Baharu
    Ahli Baharu


    Number of posts : 204
    Registration date : 15/03/2009

    switch pun masalah...tak paham lorr Empty Re: switch pun masalah...tak paham lorr

    Post by betik Sat Aug 15, 2009 1:14 am

    ada beberapa benda:
    1)
    Code:
    case "mark >= 80 && mark <= 100":
    "mark >= 80 && mark <= 100" dah jadi string kat situ, bukan conditioanl expression...compiler akan banding nilai string dalam 'mark' dengan string "mark >= 80 && mark <= 100"...semua nilai tidak sama jadi tak ada switch statement yang di execute menyebabkan nilai 'grading' masih unassigned ketika digunakan dalam
    Code:
    Console.WriteLine(grading);
    2) case label mesti constant-expression yang dapat dinilai semasa compile-time...tidak boleh conditional expression...

    3) elok ada "default" supaya kalu user tersilap masuk jenis data atau tersilap keluar dari range markah, sesuatu dapat dilakukan sperti memaparkan "invalid input" dan sebagainya..

    jadi kena guna "if...else if" untuk kes ni...dan dis-comment balik double d = Convert.ToDouble(mark); untuk menukarkan jenis data 'mark' tu...gunakan variable 'd' tu semasa membuat perbandingan dalam "if..else if" statement...ataupun terus membuat perbandingan dalam if expression tu sambil menukar jenis data 'mark' tanpa menggunakan variable lain...terpulang...

    //dah macam robot ayat aku..susah betul nak tulis skema2 ni..haha

    Sponsored content


    switch pun masalah...tak paham lorr Empty Re: switch pun masalah...tak paham lorr

    Post by Sponsored content


      Current date/time is Fri May 03, 2024 5:14 am