Java разяснение

Компютри и интернет, аудио и видео, GSM, електроуреди и всяка друга техника, различна от автомобилната, обзавеждане
Потребителски аватар
eras3r
Мнения: 763
Регистриран на: Вто 23 сеп 2008 22:13
Автомобил: Citroen C5 2014г
Двигател: 2 0hdi 163hp
Местоположение: София
Контакти:

Java разяснение

Мнениеот eras3r » Нед 17 апр 2011 15:42


Здравейте,
първо ще копирам кода и под него ще задам въпросът.

Код: Избери всички

class Help2 {
   public static void main(String args[])
      throws java.io.IOException {
      
      char choice;
      
      do{
      System.out.println("Help on:\n");
      System.out.println(" 1. if");
      System.out.println(" 2. switch");
      System.out.println(" 3. for");
      System.out.println(" 4. while");
      System.out.println(" 5. do-while\n");
      System.out.print("Choose one: ");
         do{
         choice = (char) System.in.read();
         } while(choice == '\n' | choice == '\r');
      } while(choice < '1' | choice > '5');
      
      switch(choice) {
         case '1':
         System.out.println();
         System.out.println("The if:\n");
         System.out.println("if(condition) statement;");
         System.out.println("else statement");
         break;
         
         case '2':
         System.out.println();
         System.out.println("The switch is:\n");


Допълнение:
След case '2' няма смисъл да пиша другите case'ове..то е ясно как завършва програмата.

Въпрос:
Бихте ли ми обяснили КАКВО точно казва вторият while?

Код: Избери всички

while(choice < '1' | choice > '5')

Знам защо го пиша...и какво прави..но не мога да го разтълкувам за да го разбера.
Мерси предварително.

п.с. Начинаещ съм в Java и сега съм в началото на обучението си..моля за разбиране. :)
п.с.2 Така и така съм постнал..ако може и за първият while

Код: Избери всички

while(ch == '\n' | ch == '\r')




Потребителски аватар
Чудомир
Мнения: 2856
Регистриран на: Вто 18 юли 2006 0:37
Автомобил: Passat 5.5 + Caravelle T4
Двигател: 03 V6 AMX + 97 VR6 AES
Местоположение: Нейде из Швабско или под тепетата

Re: Java разяснение

Мнениеот Чудомир » Нед 17 апр 2011 16:48


| e оператор за логическото "или":

Код: Избери всички

докато чоиса е по-малък от 1 ИЛИ по-голям от 5


Другото с == е просто сравнение дали променливата е с тая стойност

Код: Избери всички

докато чоиса е равен на \n ИЛИ равен на \r (това са сигурно line feed и carriage return, сиреч варианти на "нов ред")


http://www.leepoint.net/notes-java/io/1 ... wline.html


Потребителски аватар
eras3r
Мнения: 763
Регистриран на: Вто 23 сеп 2008 22:13
Автомобил: Citroen C5 2014г
Двигател: 2 0hdi 163hp
Местоположение: София
Контакти:

Re: Java разяснение

Мнениеот eras3r » Пон 18 апр 2011 9:10


Мерси.


Потребителски аватар
eras3r
Мнения: 763
Регистриран на: Вто 23 сеп 2008 22:13
Автомобил: Citroen C5 2014г
Двигател: 2 0hdi 163hp
Местоположение: София
Контакти:

Re: Java разяснение

Мнениеот eras3r » Сря 06 юли 2011 14:59


Друг въпрос :)
fuelneeded() приема броят мили които искам да измина, и връща броя на необходимите галони гориво. Методът fuelneeded() е дефиниран по следния начин:

Код: Избери всички

double fuelneeded(int miles) {
      return (double) miles / mpg;
   }


И..целият код...

Код: Избери всички

class Vehicle5 {
   int passengers;
   int fuelcap;
   int mpg;
   int range() {
      return fuelcap * mpg;
   }
   double fuelneeded(int miles) {
      return (double) miles / mpg;
   }
}
class CompFuel {
   public static void main(String args[]) {
      Vehicle5 minivan = new Vehicle5();
      Vehicle5 sportscar = new Vehicle5();
      double gallons;
      int dist = 252;
      
      minivan.passengers = 7;
      minivan.fuelcap = 16;
      minivan.mpg = 21;
      
      sportscar.passengers = 2;
      sportscar.fuelcap = 14;
      sportscar.mpg = 12;
      
      gallons = minivan.fuelneeded(dist);
      System.out.println("To go " + dist + " miles minivan needs: " + gallons + " gallons of fuel.");
      
      gallons = sportscar.fuelneeded(dist);
      System.out.println("To go " + dist + " miles sportscar needs: " + gallons + " gallons of fuel.");
   }
}


как и от къде по дяволите се взема това "miles" и каква стойност придобива при деленето с mpg и от къде се извежда "miles"

И какво прави това :

Код: Избери всички

minivan.fuelneeded(dist);

или по точно...защо (dist) е в скоби...
Благодаря :)


Потребителски аватар
slimmer
Мнения: 1012
Регистриран на: Чет 24 апр 2008 7:36
Автомобил: VW Bora
Двигател: TDI-AJM 2002
Местоположение: София

Re: Java разяснение

Мнениеот slimmer » Чет 07 юли 2011 7:01


И какво прави това :

Код: Избери всички

minivan.fuelneeded(dist);

или по точно...защо (dist) е в скоби...

В скоби е, защото така се предават параметри на функция. На dist горе се присвоява 252 и се предава на функцията fuelneeded, която е в класа Vehicle5. Така miles става колкото е dist , т.е. става 252 и резултатът на fuelneeded се изчислява спрямо mpg-то от съответния клас. Т.е. miles си го задаваш като предадеш стойността на dist.
За да ти го илюстрирам по нагледно - ако изкараш функцията fuelneeded извън класа, тя няма да знае колко е mpg, понеже mpg си е локална променлива на класа. Затова трябва да направиш още един параметър, чрез който да задаваш mpg:

Код: Избери всички

double fuelneeded(int miles, double milespergallon) {
      return (double) miles / milespergallon;
}

По този начин за да изчислиш нужното гориво ще трябва да правиш следното:

Код: Избери всички

gallons = minivan.fuelneeded(dist, sportscar.mpg);

Така на milespergallon от функцията се предава стойността на mpg от класа sportscar.

и каква стойност придобива при деленето с mpg

miles не си променя стойността. Резултатът от функцията fuelneeded е съответното аритметично действие с miles и mpg. по същия начин може да си направиш една променлива res, която да е double, да ѝ присвоиш резултата и да я върнеш като резултат:

Код: Избери всички

double fuelneeded(int miles) {
   double res;
   
   res = miles / mpg;
   return res;
}

По твоя начин просто е по-компактно (имаш подобно нещо и под формата на "return fuelcap * mpg;" по-горе, тук просто е зададенo типа на резултата да е double).

Надявам се си схванал замисъла. Ако не си и в момента се учиш и имаш намерение сериозно да се занимаваш с това, може би не е зле да си намериш подходящо четиво и да прочетеш за функциите повечко, ако още не си :)

Успех!



Върни се в “ОФФ-Топик - електроника, техника, обзавеждане”

Кой е на линия

Потребители, разглеждащи този форум: Няма регистрирани потребители и 42 госта