Mikähän mahtaa olla ongelman syy?
Ilmoittaa vikaa seuraavissa kohdissa:
ImageItem duke=new ImageItem("Copyright: ",
ja
ImageItem.LAYOUT_NEWLINE_AFTER,"Duke");
---------
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import java.io.*;
/**
* @author 28.12.2008 J2ME-kirjasta esimerkkiohjelma kuvien sijoittelemisesta
*/
public class ShowImage extends MIDlet {
private Display display=null;
private Form form=null;
private Image img=null;
public ShowImage()
{
form=new Form("ImageTest");
try{
ImageItem duke=new ImageItem("Copyright: ",
Image.createImage("/gnu.png"),
ImageItem.LAYOUT_CENTER|
ImageItem.LAYOUT_NEWLINE_BEFORE)|
ImageItem.LAYOUT_NEWLINE_AFTER,"Duke");
img=Image.createImage("/gnu.png");
}catch(IOException e){
form.append(new StringItem("Err","ImageNotLoaded:" e));
}
}
public void startApp() {
display=Display.getDisplay(this);
display.setCurrent(form);
if(img!=null)
form.append(img);
else
form.append(new StringItem("","Image Not Found"));
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
display.setCurrent(null);
display=null;
notifyDestroyed();
}
}
Ilmoittaa vikaa seuraavissa kohdissa:
ImageItem duke=new ImageItem("Copyright: ",
ja
ImageItem.LAYOUT_NEWLINE_AFTER,"Duke");
---------
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import java.io.*;
/**
* @author 28.12.2008 J2ME-kirjasta esimerkkiohjelma kuvien sijoittelemisesta
*/
public class ShowImage extends MIDlet {
private Display display=null;
private Form form=null;
private Image img=null;
public ShowImage()
{
form=new Form("ImageTest");
try{
ImageItem duke=new ImageItem("Copyright: ",
Image.createImage("/gnu.png"),
ImageItem.LAYOUT_CENTER|
ImageItem.LAYOUT_NEWLINE_BEFORE)|
ImageItem.LAYOUT_NEWLINE_AFTER,"Duke");
img=Image.createImage("/gnu.png");
}catch(IOException e){
form.append(new StringItem("Err","ImageNotLoaded:" e));
}
}
public void startApp() {
display=Display.getDisplay(this);
display.setCurrent(form);
if(img!=null)
form.append(img);
else
form.append(new StringItem("","Image Not Found"));
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
display.setCurrent(null);
display=null;
notifyDestroyed();
}
}
Vastaukset 9
Vanhimmat
VÄÄRIN:
ImageItem duke = new ImageItem(
"Copyright: ",
Image.createImage("/gnu.png"),
ImageItem.LAYOUT_CENTER |
ImageItem.LAYOUT_NEWLINE_BEFORE) |
ImageItem.LAYOUT_NEWLINE_AFTER,
"Duke");
OKEIN:
ImageItem duke = new ImageItem(
"Copyright: ",
Image.createImage("/gnu.png"),
ImageItem.LAYOUT_CENTER |
ImageItem.LAYOUT_NEWLINE_BEFORE |
ImageItem.LAYOUT_NEWLINE_AFTER,
"Duke");
Kerro jos et huomaa niin paljastan ratkaisun
juu perhanan sulkumerkki
piti muuten katella pitkään
Virheet jotka ohjelman kääntämisestä tuli, olivat:
1: The constructor ImageItem(String, Image, int) is undefined
2: The method LAYOUT_NEWLINE_AFTER(String) is undefined for the type ImageItem
3: Syntax error on token ",", ( expected
Kohdat joille yllä olevat virheet tulivat, olivat:
1: new ImageItem("Copyright: ", Image.createImage("/gnu.png"), ImageItem.LAYOUT_CENTER | ImageItem.LAYOUT_NEWLINE_BEFORE)
2: ,
3: LAYOUT_NEWLINE_AFTER
Rivinumero/pallo editorissa kertoo vain sen miltä riviltä virheellinen kohta alkaa, ei välttämättä sitä, millä rivillä todellinen virhe on. Netbeans varmaan näyttää virhettä klikkaamalla, Eclipsen tavoin, sen alueen koodista, eli kohdan, johon virhe kohdistuu. Yleensä ensimmäisen virheilmoituksen virhe on kaikkein paljastavin/kuvaavin, ja sitä kannattaa lähteä selvittämään/korjaamaan, sillä jäljempänä tulevat virheet ovat usein vain seurauksia ensimmäisestä virheestä ja häipyvät kun ensimmäisen virheen saa korjattua.
java alustaa oliomuuttujat aina nulliksi ilman erillistä alustusta.
sinun täytyy kysyä tätä Juha Peltomäeltä joka on kirjoittanut kirjan J2ME-Ohjelmointi Peruskirja.
että "muuttujaa ei ole ehkä alustettu" jos sitä ei alusta.
Minusta yleensäkkin ottaen fiksua aina alustaa ne.
PHPssä tais olla niin, että jos et alusta, niin sen voi syöttää URLissa ?muuttuja=arvo ja se saattaa tuoda taas tietoturvaongelmia.
"että "muuttujaa ei ole ehkä alustettu" jos sitä ei alusta. "
Vain lokaalien muuttujien tapauksessa. Luokan sisäiset muuttujat nollataan tai nullataan aina.
Jos muuttujalle annetaan arvo vain esim. while silmukassa tai if-else vertailukaaviossa kun arvo on null ilman, että se olisi manuaalisesti alustettu aiemmin (ehkä joillakin ohjelmilla siinäkin tapauksessa) monet javan editointiin tarkoitetut ohjelman valittavat ettei muuttujaa ole alustettu tai että muuttujaa ei välttämättä alusteta, jonka korjaa helposti esim. int i=null; tai int i=0; yms.