» »

[c#] Napačen izpis -- prazni stringi

[c#] Napačen izpis -- prazni stringi

Cvenemir ::

Besedilo naloge:
Izdelajte razred Študent, ki vsebuje podatke o imenu, priimku in vpisni številki. Implementiraje tudi metode za vpis in izpis podatkov študenta.

Napisal sem sledečo kodo. Problem se pojavi pri izpisu. Vedno mi izpiše prazne stringe. Kakšen namig?


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

namespace R1_študent
{
    //Ustvarimo razred student
    public class student
    {
        //Definiramo objekte razreda
        public string ime;
        public string priimek;
        public string vpisnaStevilka;

        //Definiramo začetne vrednosti objektov
        public student()
        {
            ime = " ";
            priimek = " ";
            vpisnaStevilka = " ";
        }

        public student(string ime, string priimek, string vpisnaStevilka)
        {
            this.ime = ime;
            this.priimek = priimek;
            this.vpisnaStevilka = vpisnaStevilka;
        }
        //Metoda za vpis podatkov o študentu
        public void vpisiPodatke(string ime, string priimek, string vpisnaStevilka)
        {
            Console.WriteLine("Vnesite ime študenta: ");
            ime = Console.ReadLine();

            Console.WriteLine("Vnesite priimek študenta: ");
            priimek = Console.ReadLine();

            Console.WriteLine("Vnesite vpisno številko študenta: ");
            vpisnaStevilka = Console.ReadLine();
        }
        //Metoda za izpis podatkov o študentu
        public void izpisiPodatke()
        {
            Console.WriteLine("Podatki študenta so: Ime: {0} --- Priimek: {1} --- Vpisna številka: {2}", ime, priimek, vpisnaStevilka);
        }
    }

    class Program
    {
        static void Main(string[] args)
        {          
            //Ustvarimo objekt student1
            student student1 = new student();

            //Pokličemo metodo za vpis podatkov
            string ime ="", priimek ="", vpisnaStevilka ="";
            student1.vpisiPodatke(ime, priimek, vpisnaStevilka);

            //Prikažemo rezultate
            //Console.WriteLine("Podatki študenta so: ");
            student1.izpisiPodatke();

            Console.ReadKey(true);

        }
    }
}

TheDomingo ::

Težava je v 57. vrstici kode, kjer spremenljivkam prirediš prazne nize.

Cvenemir ::

Nekaj jim moram pripisati, drugače mi javi napako "Use of unassigned local variable..."

Na primer tako
string ime, priimek, vpisnaStevilka;
            student1.vpisiPodatke(ime, priimek, vpisnaStevilka);

TheDomingo ::

Se opravičujem. Sem samo na hitro pregledal kodo.

Metodo za vpis študentov lahko spremeniš na ta način:

//Metoda za vpis podatkov o študentu
        public void vpisiPodatke()
        {
            Console.WriteLine("Vnesite ime študenta: ");
            this.ime = Console.ReadLine();

            Console.WriteLine("Vnesite priimek študenta: ");
            this.priimek = Console.ReadLine();

            Console.WriteLine("Vnesite vpisno številko študenta: ");
            this.vpisnaStevilka = Console.ReadLine();
        }

Zgodovina sprememb…

Cvenemir ::

Sedaj deluje odlično. Najlepša hvala za pomoč :)

Spura ::

TheDomingo je izjavil:

Težava je v 57. vrstici kode, kjer spremenljivkam prirediš prazne nize.

To ni res. Poglej:
V funkciji vpisiPodatke on shrani vpisane podatke v lokalne spremenljivke, ki so bile podane. On NE SHRANI vpisov v instance variable, ki imajo isto ime kot lokalne variable. Ko se funkcija zakljuci ima objekt notri tiste nize, ki jih je naredil konstruktor brez parametra, to so pa spacei, ne prazni nizi.

Cvenemir:
        public student()
        {
            ime = " ";
Nastavljas instance variablo.
        public void vpisiPodatke(string ime, string priimek, string vpisnaStevilka)
        {
            Console.WriteLine("Vnesite ime študenta: ");
            ime = Console.ReadLine();
Nastavljas lokalno spremenljivko od funkcije.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[C#] Evidenca oseb

Oddelek: Programiranje
71079 (764) DaMachk
»

[C#] Deserializacija

Oddelek: Programiranje
181755 (1358) Cvenemir
»

[c#] Ustvarjanje objekta v drugem razredu

Oddelek: Programiranje
81562 (1507) Cvenemir
»

c sharp LinkedList - Naloga

Oddelek: Programiranje
91685 (1636) Msatir
»

[C#] Kopiranje osebe iz seznama v drug seznam

Oddelek: Programiranje
51392 (1253) Presidente

Več podobnih tem