Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

Dominik avatar Dominik 82 Точки

Задача 11 Employee Data

Здравейте колеги,

Бихте ли ми казали къде бъркам за да ми хвърля FormatException? Ето го и кода:

string FirstName = "John";
        string LastName = "Smith";
        byte Age = 18;
        string Gender = "male";
        long PersonIDNumber = 8306112507l;
        string UniqueEmployeeID = "2756000892327569999";
        Console.WriteLine("The Employee {0} {1} is {2} years old he is from gender {3}."+
            "His Personal ID Number is {4} and his Unique "+
            "Employee ID is  {5}",FirstName,LastName,Age,PersonIDNumber,UniqueEmployeeID);

Благодаря предварително 

1
Programming Basics
HPetrov avatar HPetrov 822 Точки
Пропуснал си да наредиш Gender за placeholder-ите ;)
5
TodorovH avatar TodorovH 216 Точки
Имената на променливите трябва да започват с малка буква!
3
nostradamos2299 avatar nostradamos2299 2 Точки

string FirstName = "John";
            string LastName = "Smith";
            byte Age = 18;
            object Gender = "male";
            long PersonIDNumber = 8306112507;
            string UniqueEmployeeID = "2756000892327569999";
            Console.WriteLine("The Employee {0} {1} is {2} years old he is from gender {3}." +
                "His Personal ID Number is {4} and his Unique {5} " +
                "Employee ID is  {5}", FirstName, LastName, Age,Gender, PersonIDNumber, UniqueEmployeeID);

ето така трябва да е,не беше сложил  Gender след Age

0
rosenrusev avatar rosenrusev 175 Точки

Здравей,

Поствам ти коригирана програмата ти тук: http://pastebin.com/t92VQNMZ.

Проблема ти беше в това, че променливите ти започват с големи букви.

В реда с конзолния изход съм ти поправил как трябва да бъде работещ.

Пробвай, копирай, компилирай и пиши, ако имаш допълнителни въпроси ще се радвам да ме попиташ.

Надявам се да съм ти бил полезен :) 

0
ZvetanIG avatar ZvetanIG 907 Точки

Писането на променливите с главна буква се приема от компилатора. Това не хвърля FormatException.

Но по принцип колегите са прави. Прието е имената на променливите да започват с малка буква. 

2
coaster avatar coaster 412 Точки
Дано не прозвучи като дребнавост, но в условието на задачата пише, че gender може да има стойност m или f, т.е. би било по-коректно да използваш променлива от тип char :)
4
pdechkova avatar pdechkova 95 Точки

Според мен gender е char, защото е само един символ - М or F,uniqueEmployeeIDlong е long, string-a е за низ от символи, не е за цифри. :)

3
ZloboMiR avatar ZloboMiR 50 Точки

uniqueEmployeeID според ограничението в условието може да е int, uint (няма вероятност за отрицателна стойност)?

String наистина е за символи, но всъщност двата номера са точно това - числови стрингове. Представянето им като стринг е е допълнителна защита от неволно изчисление с тях, такова не се налага никога. В следващата задача 11 за банковите данни е същото, а IBAN съдържа и букви. На задача 11 нещо не желае да ми принтира всичко с една команда, може би достигам лимит на буфера или нещо подобно.

Моят вариант:

Задача 10:

using System;

class EmployeeData
{
static void Main()
{

string firstName = "Ivan";

string lastName = "Ivanov";

byte age = 90; //very experienced worker!

char gender = 'm';

long id = 9912319999; //test with the worst case

int uniEmplNum = 27569999; //test with the worst case

Console.WriteLine("{0} " + "{1} " + "{2} " + "{3} " + "{4} " + "{5} ", firstName, lastName, age, gender, id, uniEmplNum);

}
}

Задача 11:

using System;

class BankAccountData
{
static void Main()
{

string firstName = "Todor";

string middleName = "Petrov";

string lastName = "Pumpalov";

decimal balEUR = 4682.56M;

string bankName = "Vzel Dal Aver Bank";

string iban = "BG04VDAB25683791238712"; //Random, sorry if yours by accident!

string cc1 = "4278156425963597"; //Calculations not required, otherwise can be of type long or ulong.

string cc2 = "4278156425963598"; //Differs with the last digit, real life scenario.

string cc3 = "4278156425963599"; //Differs with the last digit, real life scenario.

//Optional print to check. For some reason not working with single Console.WriteLine command.

Console.Write("{0} " + "{1} " + "{2} ", firstName, middleName, lastName);

Console.Write(balEUR  + " ");

Console.Write(bankName  + " ");

Console.WriteLine(iban);

Console.WriteLine(cc1);

Console.WriteLine(cc2);
Console.WriteLine(cc3);

}
}

2
beBoss avatar beBoss 507 Точки

@ZloboMiR, не знам защо си си играл да слагаш всеки плейсхолдър в кавички и да го съединяваш с +, но това се прави и с две кавички.

 

 

  1. Console.WriteLine("{0} " + "{1} " + "{2} " + "{3} " + "{4} " + "{5} ", firstName, lastName, age, gender, id, uniEmplNum);

Ето така:

  1. Console.WriteLine("{0} {1} {2} {3} {4} {5}", firstName, lastName, age, gender, id, uniEmplNum);
1
stoian_kirkov avatar stoian_kirkov 18 Точки

Грешката ти е в следният ред:

Console.WriteLine("The Employee {0} {1} is {2} years old he is from gender {3}."+
            "His Personal ID Number is {4} and his Unique "+
            "Employee ID is  {5}",FirstName,LastName,Age,PersonIDNumber,UniqueEmployeeID);

Задал си да се отпечатат 6 променливи - {0}, {1} ... {5}, a си посочил само 5 от тях - FirstName,LastName,Age,PersonIDNumber,UniqueEmployeeID

Пропуснал си Gender. Ако го добавиш, ще проработи.

Според мен ще е добре да използваш за gender променлива от тип Boolean, например:

 bool genderFemale = false; //true or false depending on gender

Console.WriteLine(genderFemale == true ? "Gender: Female" : "Gender: Male"); //check gender

По този начин ще си упражниш булеви променливи и използването на оператора "?"

Дано съм бил полезен.

2
Karlie avatar Karlie 438 Точки

Добре, де, аз като чета условието на задачата:

Declare the variables needed to keep the information for a single employee using appropriate primitive data types. Use descriptive names. Print the data at the console.

не ми става ясно какво точно трябва да изпише програмата. Имената, възраст и т.н. на някакъв примерен работник или имената на променливите, които сме декларирали (firstName, lastName и т.н.). Тъй като в задачата се казва - декларирайте променливи, не е споменато нищо за инициализирането им с данните на примерен човек.

Надали е второто, защото според мен тогава задачата би трябвало да е със звездичка, но все пак ми е чудно има ли и други, които са се чудели какво точно се иска от тях? Предполагам, че на изпита ще се дават разяснения по условието, ако попиташ?

2
petiahr avatar petiahr 31 Точки

И аз не разбирам много добре какво точно е условието Предполагамам, че за теб не е актоален този въпрос вече. Но все пак се обръщам към всички, които ще решават за в бъдеще тази задача нека заедно да се опитаме да уточним какво се изисква от задачата, за да не се получат некоректни коментари при оценяване на домашните.

Моето разбиране на условието е: декларира се всяка от променливата и се инициализира с данните на примерен човек, т.е.

string firstName= "Ivan";

string secondNAme="Petrov";

........

И след товa се отпечатат в конзолата данните(име, възраст, пол...) на този човек.

Но виждам в решенията на някои колеги, че те четат данните от конзолата и след това ги отпечатват....

Моля за коментари Вие как разбирате условието?

 

 

 

0
Karlie avatar Karlie 438 Точки

Сега като прочетох пак условието (след една година учене), очевидно е, че трябва да се въведат примерни данни и да се отпечатат стойностите им, тоест, в твоя пример: Ivan, Petrov и т.н. Въвеждането на данни от конзолата ще го учите съвсем скоро как става.

Не би трябвало колегите, които ти оценяват домашното да ти намалят оценката за нещо, което не се иска по условие.

Свиквай отсега, че имаш колеги, които имат някакъв опит, в някои случаи - голям опит в програмирането. Това от една страна е лошо, защото изпадаш в такива ситуации, като описаната, където се чудиш какво става и само ти ли си толкова назад, но от друга страна е супер, защото можеш да научиш много от тях, при проверката на домашни например. С течение на времето, ще се поизравните :)

А на изпитите, лекторите разясняват условията много добре и винаги може да попиташ, ако нещо не ти е ясно.

Успех!

0
27/03/2015 13:34:17
ti4o.bs avatar ti4o.bs 16 Точки
string name;
Console.Write("Enter Employee First Name: ");
name = Console.ReadLine();
string family;
Console.Write("Enter Employee Last Name: ");
family = Console.ReadLine();
string age;
Console.Write("Enter Employee age: ");
age = Console.ReadLine();
string sex;
Console.Write("Enter Employee Gender (m or f): ");
sex = Console.ReadLine();
string ID;
Console.Write("Enter Employee Personal ID Number: ");
ID = Console.ReadLine();
string number;
Console.Write("Enger Employee Unique Number (2756****): ");
number = Console.ReadLine();
Console.WriteLine("Employee Personal Data is : \n name: {0} {1} \n age: {2}\n gender: {3}\n Employee Personal ID Number: {4}\n Employee Unique Number: {5}", name, family, age, sex, ID, number);

Това е и моето решение, имам само едно въпросче. Как да задам на променливите които се очаква да са цифри да приема само цифри, а на тези които са текст да приема само текст?

0
beBoss avatar beBoss 507 Точки

Какво имаш в предвид да приема? Може да проверяваш данните с if или с TryParse, ама за тази задача това изобщо не се изисква и не си струва да задълбаваш в нещо такова.

 

age-a трябва да ти е число, в случая byte (понеже byte е само положителен и е точната стойност за години = от 0 до 255).

 

id-то трябва да е uint или ulongспоред дължината, в случая uint е достатъчен. И да е с малки букви.

 

Също е хубаво да направиш задаването на типа на променливата на реда, в който ѝ четеш стойноста.

Вместо (твоят пример):

string name;
Console.Write("Enter Employee First Name: ");
name = Console.ReadLine();

да стане така:

Console.Write("Enter Employee First Name: ");
string name = Console.ReadLine();

Ето и как става и четенето на числва:

byte age = byte.Parse(Console.ReadLine());

посочваш му типа данни и parse-ваш входните данни, които по подразбиране са string.

 

Също така \n (символа ти за нов ред) трябва да е \r\n това е правилния начин да направиш нов ред в Windows.

И последно преди да ти постна кода, избягвай прекалено дългите редове, в случая последния ти ред с принтирането на инфото. В случая може да затвориш кавичките в string-a, дa добавиш един + след кавичката и да пренесеш стринга на нов ред, разбира се с добавянето на нова кавичка в началото. Това е, за което се сещам, надявм се да съм ти бил полезен.

 

Ето и как изглежда редактирания код, по това, което съм ти написал:

EmployeeData - ti4o.bs

2
ti4o.bs avatar ti4o.bs 16 Точки

Благодаря ти много !

Знам, че не се изисква, но просто исках да си я усложня малко :)

1
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.