Java

shadow_rr

Resistance is Futile
Член од
8 јули 2006
Мислења
1.807
Поени од реакции
323
Здраво момци, имам проблем во врска со ова апликацииве што ги правам во јава. Всушност на крај на проектот тие ги експортирам во .jar датотека. Потоа апликацијата ми работи на Виндоус компјутерите, но кога ќе ја ставам на линукс не да не ја покрева туку не ја дава како java фајл.. имате ли искуство со тоа? што да правам?
Пробај со
PHP:
java -jar ImetoNaAplikacijata.jar
 
Член од
15 јуни 2012
Мислења
21
Поени од реакции
0
Пробај со
PHP:
java -jar ImetoNaAplikacijata.jar
еве слика.. значи има и јава и се шо треба..
немојте само да ми замерите на тоа патеката на јавата шо ја пишав пред java -jar... затоа што пробав и без патеката но ист проблем беше.. всушност сликава ми е за да ви покажам дека има јава, а фајлот може да видите дека не го дава како јава фајл
СликаОдЕкранот.png
 

shadow_rr

Resistance is Futile
Член од
8 јули 2006
Мислења
1.807
Поени од реакции
323
еве слика.. значи има и јава и се шо треба..
немојте само да ми замерите на тоа патеката на јавата шо ја пишав пред java -jar... затоа што пробав и без патеката но ист проблем беше.. всушност сликава ми е за да ви покажам дека има јава, а фајлот може да видите дека не го дава како јава фајл
Прегледај го приврзокот 110203
Проблемот на овој скриншат ти е баш заради тоа /usr/bin/java. На машината имаш restricted shell каде што не можеш да извршуваш наредби кои што содржат коса црта во нив.
Дај прати го output-от од обичната java -jar наредба, не верувам дека е скрос ист со ова на претходниот скриншат.
 
Член од
22 февруари 2014
Мислења
172
Поени од реакции
27
Веќе цел семестар работам Јава и имам прашање околу тоа како го решавате проблемот со покажувачи во Јава (оној момент кога ми е потребно да работам со референца на оригинал, а не негова копија, а Јава ги нема класичните покажувачи од Ц и Ц++).
Знам дека Јава работи само со референци, но имам проблем кога сакам да повикувам методи (што е нормално, бидејќи за влезните аргументи се креираат копии, а не се работи со оригиналите). Исто, знам дека единствено за примитивните типови не се праќа копија, туку оригинал.
Она што ме интересира т.е. ми е нејасно како би можело да се изведе најдобро можам да го доловам преку следниот пример:
- да речеме дека програмот 1000 пати врши една работа (најпрост swap нека е и тоа на 2 елементи). Секако, мануелното испишување на истиот код за swap 1000 пати не е опција, па некако интуитивно е да се креира метод за тоа (нека биде static за да не мора да се креира истанца од класата за да биде употребен). Меѓутоа, работам со генерици и бидејќи се објекти од моја класа (не се примитивни типови), кога ги праќам двата елементи за замена ко аргументи, всушност не се заменуваат тие, туку нивните копии (јасно ми е зошто е тоа така). Она што ме интересира е како може (ако може воопшто) да се изведе swap на дадените елементи, ако знаеме дека елементите кои ги заменувам не ги чувам ко елементи на класата и методот го повикувам за внесени броеви од main???
 

Jaqen H'ghar

Faceless man
Член од
25 март 2009
Мислења
1.077
Поени од реакции
1.272
Ај постирај кодот од се шо имаш, зашто вака некако слабо те разбирам и ако го видам кодот ќе сфатам шо сакаш да направиш и да ти помогнам.
 
Член од
28 мај 2008
Мислења
3.966
Поени од реакции
4.073
Веќе цел семестар работам Јава и имам прашање околу тоа како го решавате проблемот со покажувачи во Јава (оној момент кога ми е потребно да работам со референца на оригинал, а не негова копија, а Јава ги нема класичните покажувачи од Ц и Ц++).
Знам дека Јава работи само со референци, но имам проблем кога сакам да повикувам методи (што е нормално, бидејќи за влезните аргументи се креираат копии, а не се работи со оригиналите). Исто, знам дека единствено за примитивните типови не се праќа копија, туку оригинал.
Она што ме интересира т.е. ми е нејасно како би можело да се изведе најдобро можам да го доловам преку следниот пример:
- да речеме дека програмот 1000 пати врши една работа (најпрост swap нека е и тоа на 2 елементи). Секако, мануелното испишување на истиот код за swap 1000 пати не е опција, па некако интуитивно е да се креира метод за тоа (нека биде static за да не мора да се креира истанца од класата за да биде употребен). Меѓутоа, работам со генерици и бидејќи се објекти од моја класа (не се примитивни типови), кога ги праќам двата елементи за замена ко аргументи, всушност не се заменуваат тие, туку нивните копии (јасно ми е зошто е тоа така). Она што ме интересира е како може (ако може воопшто) да се изведе swap на дадените елементи, ако знаеме дека елементите кои ги заменувам не ги чувам ко елементи на класата и методот го повикувам за внесени броеви од main???
Мислам дека ова ќе ти заврши работа
http://javadude.com/articles/passbyvalue.htm
Некој те излажал за примитивни во Јава секогаш е по вредност т.е прави копија
Разликата е во тоа што креирање нова вредност кај примитивите е
int i=0;
нова вредност i=1;
Object1 obj=new Object1();
obj.setAtt1("att1"); ова не е сетирање на нова вредност кај објектите, но ова е obj=new Object1(); Со првото само менуваш вредност на некоја мемориска локација каде објектот obj покажува.
 
Член од
22 февруари 2014
Мислења
172
Поени од реакции
27
Ај постирај кодот од се шо имаш, зашто вака некако слабо те разбирам и ако го видам кодот ќе сфатам шо сакаш да направиш и да ти помогнам.
Не станува збор за конкретна задача, туку концептот на работа во било кој проблем од овој тип ме интересира. Еве во една реченица, прашањето е: како ќе обработиш два елементи со (working) swap метод, ако притоа знаеш дека тие елементи не ги чуваш внатре во класата каде ги обработуваш?
Еве со пример:
Код:
public void swap(T t1, T t2)
    {
        if(t1.compareTo(t2)>0)
        {
            T temp=prv;
            prv=vtor;
            vtor=temp;
        }
        else
        {
            T temp=vtor;
            vtor=prv;
            prv=temp;
        }
    }
значи, ако се чуваа прв и втор ко генерици внатре во класата, лесно ќе ја направеше замената, но што ако не ги чуваш? Како да се реализира swap тогаш???
Дополнително, ме интересира зошто 1900 год. java.util.date ја дава ко 3800. Сакам да споредам датум со првиот момент од 1900 год. (креирав Date d = new Date(1900, 0, 1, 0, 0);), но не ми ги прави добро споредбите, зошто годината која ја враќа во овој случај е 3800.....
 
Член од
6 јуни 2009
Мислења
3.094
Поени од реакции
445
Не станува збор за конкретна задача, туку концептот на работа во било кој проблем од овој тип ме интересира. Еве во една реченица, прашањето е: како ќе обработиш два елементи со (working) swap метод, ако притоа знаеш дека тие елементи не ги чуваш внатре во класата каде ги обработуваш?
Еве со пример:
Код:
public void swap(T t1, T t2)
    {
        if(t1.compareTo(t2)>0)
        {
            T temp=prv;
            prv=vtor;
            vtor=temp;
        }
        else
        {
            T temp=vtor;
            vtor=prv;
            prv=temp;
        }
    }
значи, ако се чуваа прв и втор ко генерици внатре во класата, лесно ќе ја направеше замената, но што ако не ги чуваш? Како да се реализира swap тогаш???
Дополнително, ме интересира зошто 1900 год. java.util.date ја дава ко 3800. Сакам да споредам датум со првиот момент од 1900 год. (креирав Date d = new Date(1900, 0, 1, 0, 0);), но не ми ги прави добро споредбите, зошто годината која ја враќа во овој случај е 3800.....
Мешаш баби и жаби, генерици и покажувачи
Во Ц++ негерички swap би одел
Код:
void swap(int * a, int *b)
А генерички би одел.
Код:
template <typename T>
void swap(T * a, T *b)
И сега, ако менуваме два елементи од низа повикуваме
Код:
int a[4] = {1,2,3,4}
swap(&a[1], &a[3])
или генеричка варијанта
Код:
string a[4] = {"1","2","3","4"}
swap<string>(&a[1], &a[3]) // swap se predefinira kako void swap(string * a, string * b)
Запази ги ѕвездите во декларацијата на swap и амперсандот. Значи ние викаме извлечија адресата на 2риот елемент во низата, па извлечи ја адресата на 4тиот елемент и прати ги адресите во swap.

Е сега што те буни тебе, во Ц++ имаме и ваква можност кога работиме со објекти.
Код:
string * a[4] = {new string("1"), new string("2"), new string("3"), new string("4")}
swap<string*>(&a[1], &a[3]) // swap avtomatski se predefinira kako void swap(string * * a, string * * b) // zapazi dupli dzvezdi
Е во Јава кога работиме со објекти, сите објекти се по референца односно по покажувач со една ѕвезда (таа е скриена во јава) и тоа е единствата дозволена можност (ова е третата можност од ц++). Немаме "чисти" објекти (без ниедна ѕвезда), немаме дупли ѕвездни. Значи не можеме да извлечиме покажувач каде сакаме -- не можеме да извлечиме покажувач кон место на средина во низата.

Па во јава има само еден начин за свап, со индекси.
Негенерички би бил вака
Код:
void swap(int[] a, int i, int j)
void swap(String[] a, int i, int j) // tuka rabotime so objekti, String krie edna dzvezda, nemae kontrola vrz toa
Генерички би билo вака
Код:
void swap(Т[] a, int i, int j) // Т оди на местото од String и автоматски си крие една ѕвезда исто како што си крие String - имаме низа од покажувачи и во јава сите низи од објекти се низи од покжувачи без разлика дали сме ставиле генерик или не, нема низи од цели објекти.
И сега да се вратиме горе на бабите и жабите, Темплејт/Генерик само менува ТИП на местото од Т, не дефинира никаков покажувач. Е сега финтата е шо во Ц++ ТИП може да биди примитивен тип, класен тип, покажувач кон нешто (со 5 ѕвезди) и освен тоа можеме да си додаваме ѕвезди после Т.

Во јава типови се само примитицни и класни типови, нема никави дополнителни покажувачи. Променлива од класен тип е „скриен“ покажувач и толку, тоа е тоа. Па и тоа Т е такво -- нема други видови на ТИПОВИ.
И за крај во јава, Т не може да менува примитивни типови.
 
Последно уредено:
Член од
22 февруари 2014
Мислења
172
Поени од реакции
27
Мешаш баби и жаби, генерици и покажувачи
Во Ц++ негерички swap би одел
Код:
void swap(int * a, int *b)
А генерички би одел.
Код:
template <typename T>
void swap(T * a, T *b)
И сега, ако менуваме два елементи од низа повикуваме
Код:
int a[4] = {1,2,3,4}
swap(&a[1], &a[3])
или генеричка варијанта
Код:
string a[4] = {"1","2","3","4"}
swap<string>(&a[1], &a[3]) // swap se predefinira kako void swap(string * a, string * b)
Запази ги ѕвездите во декларацијата на swap и амперсандот. Значи ние викаме извлечија адресата на 2риот елемент во низата, па извлечи ја адресата на 4тиот елемент и прати ги адресите во swap.

Е сега што те буни тебе, во Ц++ имаме и ваква можност кога работиме со објекти.
Код:
string * a[4] = {new string("1"), new string("2"), new string("3"), new string("4")}
swap<string*>(&a[1], &a[3]) // swap avtomatski se predefinira kako void swap(string * * a, string * * b) // zapazi dupli dzvezdi
Е во Јава кога работиме со објекти, сите објекти се по референца односно по покажувач со една ѕвезда (таа е скриена во јава) и тоа е единствата дозволена можност (ова е третата можност од ц++). Немаме "чисти" објекти (без ниедна ѕвезда), немаме дупли ѕвездни. Значи не можеме да извлечиме покажувач каде сакаме -- не можеме да извлечиме покажувач кон место на средина во низата.

Па во јава има само еден начин за свап, со индекси.
Негенерички би бил вака
Код:
void swap(int[] a, int i, int j)
void swap(String[] a, int i, int j) // tuka rabotime so objekti, String krie edna dzvezda, nemae kontrola vrz toa
Генерички би билo вака
Код:
void swap(Т[] a, int i, int j) // Т оди на местото од String и автоматски си крие една ѕвезда исто како што си крие String - имаме низа од покажувачи и во јава сите низи од објекти се низи од покжувачи без разлика дали сме ставиле генерик или не, нема низи од цели објекти.
И сега да се вратиме горе на бабите и жабите, Темплејт/Генерик само менува ТИП на местото од Т, не дефинира никаков покажувач. Е сега финтата е шо во Ц++ ТИП може да биди примитивен тип, класен тип, покажувач кон нешто (со 5 ѕвезди) и освен тоа можеме да си додаваме ѕвезди после Т.

Во јава типови се само примитицни и класни типови, нема никави дополнителни покажувачи. Променлива од класен тип е „скриен“ покажувач и толку, тоа е тоа. Па и тоа Т е такво -- нема други видови на ТИПОВИ.
И за крај во јава, Т не може да менува примитивни типови.
Го исчитав постов и единствен заклучок до кој дојдов е дека ништо не си ме разбрал. Т инаку менува примитивни типови (индиректно), но ако му ја пратиш соодветната wrapper класа. Многу добро знам што означуваат * и & во ц++, ама она јас што го прашувам се однесува на Јава. Па уште еднаш да доконкретизирам без примери и глупости, зошто очигледно инаку го сфаќате контекстот на напишаното:
како во Јава да се пристапи до соодветната мемориска адреса на било која променлива, во било кој момент (без оглед дали ја праќаме во методи или не)?
 
Член од
28 мај 2008
Мислења
3.966
Поени од реакции
4.073
Го исчитав постов и единствен заклучок до кој дојдов е дека ништо не си ме разбрал. Т инаку менува примитивни типови (индиректно), но ако му ја пратиш соодветната wrapper класа. Многу добро знам што означуваат * и & во ц++, ама она јас што го прашувам се однесува на Јава. Па уште еднаш да доконкретизирам без примери и глупости, зошто очигледно инаку го сфаќате контекстот на напишаното:
како во Јава да се пристапи до соодветната мемориска адреса на било која променлива, во било кој момент (без оглед дали ја праќаме во методи или не)?
Само ако ти е декларирана како променлива дел од класата
Код:
class Swapper {
   int i1;
   int i2;
   public Swapper (int i1,int i2){
              i1=i1;
              i2=i2;
   } 

   public void swap(){
       int tmp=i1;
       i1=i2;
       i2=tmp;
   }

}
Во main
new Swapper(5,6).swap();
 
Член од
6 јуни 2009
Мислења
3.094
Поени од реакции
445
Само ако ти е декларирана како променлива дел од класата
Код:
class Swapper {
   int i1;
   int i2;
   public Swapper (int i1,int i2){
              i1=i1;
              i2=i2;
   }

   public void swap(){
       int tmp=i1;
       i1=i2;
       i2=tmp;
   }

}
Во main
new Swapper(5,6).swap();
Шо поента има класава... некако, бескорисна е.
 
Член од
28 мај 2008
Мислења
3.966
Поени од реакции
4.073
Шо поента има класава... некако, бескорисна е.
Да направи смена на две променливи во јава, може ти се чини бескорисна, но ако работиш наивно, ќе треба да креираш класа со статички метод и ќе се прашуваш зошто не работи.
 
Член од
22 февруари 2014
Мислења
172
Поени од реакции
27
Да направи смена на две променливи во јава, може ти се чини бескорисна, но ако работиш наивно, ќе треба да креираш класа со статички метод и ќе се прашуваш зошто не работи.
Јас само би ја коригирала да е генеричка и би го исфрлила целиот метод за swap. Swap - от би го реализирала уште во конструкторот, каде this.i1 = i2 и this.i2 = i1;
 
Член од
28 мај 2008
Мислења
3.966
Поени од реакции
4.073
Јас само би ја коригирала да е генеричка и би го исфрлила целиот метод за swap. Swap - от би го реализирала уште во конструкторот, каде this.i1 = i2 и this.i2 = i1;
Може и така, но во духот на ОО ќе биде лошо, затоа што конструкторот ти е за иницијализација т.е конструкција на објектот
 

Kajgana Shop

На врв Bottom