Ohjelmoinnin ongelmanurkkaus

^

Kiitos edellisistä. En osannut tuota kysymystä oikein selittää kunnolla, mutta sain se kuitenkin tehtyä.

Nyt taas yksi tiukka kysymys.

Minulla on yhdessä luokassa monta metodia. Metodissa 1 on eräs Double arvo, jonka haluan tulostaa metodissa 4. Miten ihmeessä saan nuo näkymään monessa metodissa?

Olen yrittänyt muuttaa molemmat metodit privateista, publiceiksi. Mutta ei onnistu.

Et saa metodin sisällä esiteltyä muuttujaa näkymään metodin ulkopuolella muuten kuin palauttamalla ko. muuttujan arvon metodin lopussa return-lauseella tai siirtämällä muuttujan esittelyn metodin ulkopuolelle. Eli muuttamalla paikallisen muuttujan luokan muuttujaksi. Paikalliset muuttujat ovat näkyvissä vain siinä lohkossa kuin ne on esitelty ja olemassa vain ko. lohkon suorituksen aikana.

Kumpi noista on järkevämpi tapa, on aina tapauskohtaista. Onko ko. muuttuja sellainen, että sen sisältämä tieto pitää olla olemassa muulloinkin kuin metodin 1 suorituksen aikana tai onko ko. muuttujan sisältö oikeasti luokan ominaisuus? Jos näin, niin kannattanee muuttaa tuo paikallinen muuttuja luokan muuttujaksi.

Jos ko. muuttuja ei loogisesti kuulu luokan muutujaksi ja metodin 1 muokkaus palauttamaan ko. muuttujaa ei tuota ongelmia, niin sitten return-lauseen käyttö ollee fiksumpaa. Mikäli metodi palauttaa jo jotakin ja muuttuja ei silti loogisesti kuulu luokan muuttujaksi, tarvinnee koodi suurempaa uudelleenjärjestelyä, jotta se on loogisesti jaoteltu...


http://leepoint.net/JavaBasics/methods/methods-22-local-variables.html
 
10% ALENNUS KOODILLA PAKKOTOISTO
^

Kiitos. On se vain yksinkertaista, kun sen osaa.

Tein muuttujasta luokkamuuttujan, koska se oli helpompi minulle. Oikeastaan toinen vaihtoehto olisi ollut parempi, koska muuttuja esiintyy vain noissa kahdessa metodissa.

Kiitos paljon.
 
Menee hieman ohi aiheen, mutta liittyy kuitenkin ohjelmointiin. Tarkemmin Eclipseen.

Mistä mahtaa johtua seuraava ilmiö:

Ohjelmoin aivan normaalisti pari tuntia tässä aamulla ja nyt yhtäkkiä suoritinkäyttö nousi 100% ja pysyy siellä vaikka mitä tekisi ja kone tietysti jumahtaa. Sammutan Eclipsen ja heti suoritinkäyttö tipahtaa alle 10%.

Muistelisin joskus vanhemmallakin koneella Xp: käyttiksellä käyneen tuota. Nyt siis Vista käytössä.
 
^^ Eclipse hakee jotain päivityksiä muutaman tunnin välein? Eclipse on kyllä todella raskas, varsinkin jos on softan automaattiset kääntämiset yms. päällä.
 
et oo tosissas?
 
Opettelua saattaa helpottaa myös koodin vääntäminen ensin pseudokoodilla, eli käytännössä ohjelmointilogiikan mukaisesti ilman varsinaista ohjelmointikieltä. Jos ohjelmointi on tosiaan vierasta, saattaa tuo helpottaa algoritmin suunnittelua kun syntaksista ei tarvitse huolehtia.

http://fi.wikipedia.org/wiki/Pseudokoodi
Tuo Haukifileen neuvosta kannattaa varmaan lähteä liikkeelle.

ps. luku on parillinen jos luku%2 on 0.
 
On ehkä vähän tyhmä kysymys, mutta kun ei vaan oo hallussa tää homma..

Miten jotain luokkaa käytetään pääohjelmalla? Siis jos oon toteuttanu jonkun jutun luokkana ja sitten on pääohjelma, missä sitä luokkaa pitäis käyttää, niin pitääkö se luokka olla tehtynä samassa tiedostossa kun se pääohjelma? Vai voiko ne toteuttaa eri tiedostoina siten, että on vaan samassa kansiossa se luokkatiedosto ja pääohjelmatiedosto?

En vaan saa niitä toimimaan..
 
Ei niiden tarvitse olla samassa tiedostossa. Helpompaakin varmaan tehdä se niin, kuin käyttää sisäluokkaa. Sisäluokka tosin voisi olla staattinen.

http://java.sun.com/docs/books/tutorial/java/javaOO/innerclasses.html

Vaikea nyt ilman koodia veikata missä sulla menee vikaan, mutta luotko sun "jutusta" new-sanalla uuden instanssin pääohjelmassa? Vai onko sulla siellä joku metodi joka tekisi jotain, mitä sitten haluat kutsua pääohjelmassa? Silloinhan se kannattaisi kirjoittaa suoraan pääohjelmaan.
 
Jeps sainhan mä ne toimimaan. Johtu ilmeisesti ääkkösistä, ei jostain syystä hyväksyny niitä. Ihmetytti vaan ku noi oli valmiita juttuja meiän opiskelumateriaalista eikä toiminu..
 
Asensin winukka 7 64 bittisen version ja siihen javan development kitin. Nyt tuo eclipse ei lähdekkään käyntiin, valittaa seuraavaa:

Koodi:
A Java Runtime Environment (JRE) or Java Development Kit (JDK)
must be available in order to run Eclipse. No Java virtual machine
was found after searching the following locations:
C:\Program Files\eclipse\jre\bin\javaw.exe

Mites tuon nyt saa pelittämään?

Kiirus olisi, kiitoksia etukäteen.

edit eipäs sittenkään mitään :)
 
Menee hieman ohi aiheen, mutta liittyy kuitenkin ohjelmointiin. Tarkemmin Eclipseen.

Mistä mahtaa johtua seuraava ilmiö:

Ohjelmoin aivan normaalisti pari tuntia tässä aamulla ja nyt yhtäkkiä suoritinkäyttö nousi 100% ja pysyy siellä vaikka mitä tekisi ja kone tietysti jumahtaa. Sammutan Eclipsen ja heti suoritinkäyttö tipahtaa alle 10%.

Muistelisin joskus vanhemmallakin koneella Xp: käyttiksellä käyneen tuota. Nyt siis Vista käytössä.
Miten paljon oot Eclipseä käyttänyt? Onko Progress boksissa mitään menossa kun pomppaa 100%?
Kuulostais että se buildailee jotain projekteja taustalla.

Adrift onko teillä siis opiskelumateriaalissa muuttujia/metodinimiä suomeks? Aika outoa, eihän tommosta oikeessa koodissa voi käyttää.
 
Voihan niitä ääkkösiä käyttää jos haluaa (ei kuitenkaan luokan nimissä kannata jos eri alustoilla meinaa haluta koodin toimivan), mutta harvemmin niin missään näkee opetettavan tai sellaista koodia kirjoitettavan. Mutta eihän tuohon estettä ole.
 
Millä tavalla Java Spring ja Python Django eroavat toisistaan? Djangoa tietenkin helpompi käyttää, mutta missä tilanteissa olisi ideaa käyttää Springiä Djangon sijaan? Suorituskyky? Kummatkin kuitenkin toimivat MVC arkitehtuurilla, ORM...
 
Oiskohan kova juttu jos tästä ketjusta tekisi yleisen ohjelmointiketjun? Haulla etsin mutta en sellaista löytänyt.

Mä nimittäin olisin innostunut puhumaan esim. ActionScriptistä, PHP:stä ja XML:stä mutta ei viitsi niille nyt omaa ketjua kuitenkaan perustaa kun tälläinen on.
 
No heittele kyssää vaan tulemaan, niin vastaillaan. :)

Jeah. No ensiksi yksi AS 3.0 juttu. Mulla on nyt työn alla roolipelityyppinen keskustelusysteemi, tai no se on lähes valmis mutta paria juttua en hanskaa.

Skriptit ovat ulkoisessa XML-tiedostossa jota AS3-luokka sitten käy läpi ja tulostaa repliikit, puhujien nimet ja kuvat ruudulle. Skriptit on tässä muodossa:

Koodi:
<SCRIPT>

<DIALOG TYPE="DIALOG" SPEAKER="Erkki" IMG="erkki_vittuuntunut">
<LINE>Ei prkl, joku on syönyt mun ehrmannit!</LINE>
<LINE2></LINE2>
</DIALOG>

<DIALOG TYPE="DIALOG" SPEAKER="Rauski" IMG="rauski_nauraa">
<LINE>Mahtaa vituttaa!</LINE>
<LINE2></LINE2>
</DIALOG>

</SCRIPT>

Kaikki pelittää kuten pitää mutta ongelma tulee muuttujien kanssa. Miten saisin muuttujat toimimaan tuon ulkoisen XML-fileen kanssa niin että esim. keskelle repliikkiä kirjoitan {playerName} ja ActionScript tulostaa sen tilalle pelaajan nimen?

http://www.peterelst.com/blog/2007/09/13/actionscript-30-using-variables-in-xml/

Tuossa on juttua aiheesta mutta tuokaan esimerkki ei lataa ulkoista XML-tiedostoa, vaan kirjoittaa sen AS-koodiin sisällä, joka ei ole vaihtoehto, sillä oletetaan että skriptejä tulisi olemaan jopa satoja kuten kunnon roolipelissä on.

Tässä vielä hyvin karsittu versio tuosta AS3-koodista ilman asiaan kuulumattomia tilpehöörejä, jos siitä nyt saa mitään selvää.

Koodi:
private var i = 0;

// Ladataan joku XML-tiedosto
scriptLoader.load(new URLRequest("erkinehrmannit.xml"));

// Kun se on ladattu suoritetaan processXML-funktio
scriptLoader.addEventListener(Event.COMPLETE, processXML);

function processXML(script:Event):void {
	
        // Tehdään uusi XML-luokan instanssi nimeltä scriptXML

	scriptXML = new XML(script.target.data);

       // Haetaan ladatusta XML:stä dataa ja tehdään niillä jotain

	showSpeaker.gotoAndStop(scriptXML.DIALOG[i].@IMG);
	dialogSpeaker.text = scriptXML.DIALOG[i].@SPEAKER;

	dialogLine1.text = scriptXML.DIALOG[i].LINE;
	dialogLine2.text = scriptXML.DIALOG[i].LINE2;

       // Vaihdetaan seuraavaan suunvuoroon kun välilyöntiä on painettu

	function nextLine(event:KeyboardEvent):void {
					
		if (event.keyCode == Keyboard.SPACE) {	

		i++;

		if (i < scriptXML.*.length()) {

                        // Tarkistetaan että joku puhuu eikä pelaajalta kysytä mitään

			if (scriptXML.DIALOG[i].@TYPE == "DIALOG") {

                                showSpeaker.gotoAndStop(scriptXML.DIALOG[i].@IMG)	
				dialogSpeaker.text = scriptXML.DIALOG[i].@SPEAKER;

				dialogLine1.text = scriptXML.DIALOG[i].LINE;
				dialogLine2.text = scriptXML.DIALOG[i].LINE2;

			}	
					
		} 

                else {

			// Skripti loppui joten kutsutaan funktio joka lopettaa keskustelun
			endConversation();
								
		}	
           }
     }
}
 
EIkös ton voi duunaa ihan perus string replacella?

var str:String = "moi {playerName} on jotain outoa";
var playerName:String = "Aatu";
str.replace("{playerName}", playerName);

Kyllähän tuon varmaan voisi string replacellakin tehdä, mutta tuntuu vähän hölmöltä että muuttaa XML-datan merkkijonoksi ja siitä alkaa sitten työstämään, kun AS3:ssa XML on natiivi datatyyppi.

En siis mielellään lähtisi tekemään "turhaan" tuota välimuunnosta ja replacea jos on olemassa yksinkertaisempikin tapa eli tuo {merkkijono} systeemi, se vain pitäisi saada toimimaan ulkoisesti loadatun XML-filun kanssa, suoraan se ei toiminut kun kokeilin. Tietenkään jos se ei onnistu niin sitten on noin tehtävä.

Tosin tuossa mun postaamassa esimerkissä XML-data muunnetaan joka tapauksessa merkkijonoksi lopussa ennen kuin se tulostetaan, mä en muunna silloinkaan, joten kokeillaas vielä sitä.

EDIT: Ei auttanut vaikka laittoi
Koodi:
dialogLine1.text = scriptXML.DIALOG[i].LINE.toString();

Tulee edelleen sellaisenaan läpi. :( Pitää vielä tutkia.
 

Latest posts

Suositut

Back
Ylös Bottom