Hjälp med java-programmering
14 inlägg
• Sida 1 av 1
Hjälp med java-programmering
Jag håller på att lära mig java nu. Tack vara Miche så hittade jag den här guiden. http://www.cafeaulait.org/javatutorial.html Allt gick bra tills jag kom till ett program som heter factorial. Jag kan tyvärr inte ge en sidreferense så ni får söka. Programmet i fråga har 2 delar och ser ut så här.
Det här kompilerar inte alls. Vad är felet? Jag vet att det finns flera men har inte tid att nämna allt nu. Sen finns ett program som sägs testa factorial metoden i det tidigare koden. Det här kompilerar.
Har jag fattat fel och är det inte ens tänkt att det första programmet ska köras? Ni som inte kan java eller som kan men vill fräscha upp kunskaperna får gärna läsa guiden och säga vad ni tycker.
- Kod: Markera allt
class Factorial {
public static void main(String args[]) {
int n;
while ((n = getNextInteger()) >= 0) {
System.out.println(factorial(n));
}
} // main ends here
}
- Kod: Markera allt
long factorial (long n) {
int i;
long result=1;
for (i=1; i <= n; i++) {
result *= i;
}
return result;
} // factorial ends here
Det här kompilerar inte alls. Vad är felet? Jag vet att det finns flera men har inte tid att nämna allt nu. Sen finns ett program som sägs testa factorial metoden i det tidigare koden. Det här kompilerar.
- Kod: Markera allt
class FactorialTest {
public static void main(String args[]) {
int n;
int i;
long result;
for (i=1; i <=10; i++) {
result = factorial(i);
System.out.println(result);
}
} // main ends here
static long factorial (int n) {
int i;
long result=1;
for (i=1; i <= n; i++) {
result *= i;
}
return result;
} // factorial ends here
}
Har jag fattat fel och är det inte ens tänkt att det första programmet ska köras? Ni som inte kan java eller som kan men vill fräscha upp kunskaperna får gärna läsa guiden och säga vad ni tycker.
Re: Hjälp med java-programmering
Jag såg inte att getnextinteger() var definierad nånstans och vet inte ifall den är inbyggd.
Googlade fram detta, för att ytterligare krångla till det
http://www.freejavaguide.com/file_streams.htm
Googlade fram detta, för att ytterligare krångla till det
http://www.freejavaguide.com/file_streams.htm
- barracuber
- Inlägg: 10992
- Anslöt: 2007-02-11
- Ort: Västsverige
Re: Hjälp med java-programmering
barracuber skrev:Jag såg inte att getnextinteger() var definierad nånstans och vet inte ifall den är inbyggd.
Den definieras senare i guiden:
We've simply named two methods, getNextInteger() and factorial() without worrying about their exact implementations. We can add the rest of the code in smaller, easier-to-understand pieces. Let's write the factorial method first.
Next we promised to write a getNextInteger() method that will accept an integer from the user. Here it is:
- Kod: Markera allt
static int getNextInteger() {
String line;
DataInputStream in = new DataInputStream(System.in);
try {
line = in.readLine();
int i = Integer.valueOf(line).intValue();
return i;
}
catch (Exception e) {
return -1;
}
} // getNextInteger ends here
Re: Hjälp med java-programmering
HGJ skrev:http://www.freejavaguide.com/file_streams.htm
HGJ skrev:barracuber skrev:Jag såg inte att getnextinteger() var definierad nånstans och vet inte ifall den är inbyggd.
Den definieras senare i guiden:
..
Den sajten jag länkade till - http://www.freejavaguide.com - är lite märklig för den har ingen som helst avsändare; det finns ingen "About"-sida, ingen kontaktinfo och någon info om sajtägaren. Själva sajtinnehållet - ett stort antal tutorials i java, SQL, HTML och XML - ser dock proffsigt ut även om jag inte läst i detalj ännu.
Funktionen getNextInteger() är något som skapas specifikt i File I/O and Streams-exemplet. Jag var otydlig när jag skrev "jag vet inte ifall den är inbyggd". Det kändes bara inte som ett funktionsnamn som Sun (javas skapare) normalt sett skulle döpa inbyggda funktioner till *)
Eyesonly, kan du leta i din tutorial och se om du hittar koden till dess funktion getNextInteger() ?
*)
Men tji för mig direkt hittade jag ett exempel från javaapplikationsservern JBoss där funktionsnamnet förekommer - i klassen
Class AutoNumberFactory. JBoss är dock inte en produkt som är gjord av Sun.
Mycket sannolikt kan man hitta massvis med fler exempel där detta funktionsnamn förekommer. Min poäng var bara att jag tvivlade på att det förekommer i själva kärnan av javaspråket (core java).
- barracuber
- Inlägg: 10992
- Anslöt: 2007-02-11
- Ort: Västsverige
Re: Hjälp med java-programmering
barracuber skrev:Funktionen getNextInteger() är något som skapas specifikt i File I/O and Streams-exemplet. Jag var otydlig när jag skrev "jag vet inte ifall den är inbyggd". Jag förstod hela tiden att Sun (javas skapare) aldrig döpa inbyggda funktioner på det sättet.
Eyesonly, kan du leta i din tutorial och se om du hittar koden till dess funktion getNextInteger() ?
Jag citerade ur Eyesonlys tutorial. http://www.cafeaulait.org/javatutorial.html och http://www.freejavaguide.com/file_streams.htm har identiska getNextInteger()-metoder.
Re: Hjälp med java-programmering
HGJ skrev:barracuber skrev:Funktionen getNextInteger() är något som skapas specifikt i File I/O and Streams-exemplet. Jag var otydlig när jag skrev "jag vet inte ifall den är inbyggd". Jag förstod hela tiden att Sun (javas skapare) aldrig döpa inbyggda funktioner på det sättet.
Eyesonly, kan du leta i din tutorial och se om du hittar koden till dess funktion getNextInteger() ?
Jag citerade ur Eyesonlys tutorial. http://www.cafeaulait.org/javatutorial.html och http://www.freejavaguide.com/file_streams.htm har identiska getNextInteger()-metoder.
Sorry, sedan du citerade mig så formulerade jag om mitt inlägg inte. Men jag låter originaltexten stå kvar.
Det stämmer, jag missade det för jag tittade aldrig på cafeaulait-exemplet. Det råkar vara exakt samma implementering av metoden dvs samma kod i båda exemplen. Men båda exemplen verkar ha några år på nacken och det är nog mer eller mindre en slump att det är samma kod som används på båda ställena. Någon av dem har lånat koden nånstans ifrån (kanske från varandra). Jag tvivlar dock på att Sun har skrivit den koden.
Du har förresten helt rätt i att det är en metod (inte en funktion) enligt OOP. My bad!
Att jag nämnde att koden till getNextInteger() saknades i första inlägget var bara ett infall. Det kan vara andra saker som gör att Eyesonly ställer frågan.
- barracuber
- Inlägg: 10992
- Anslöt: 2007-02-11
- Ort: Västsverige
Re: Hjälp med java-programmering
Men det i sig är ett fel med guiden. Jag ska till att börja läsa om arrays. Om guiden hade varit en bok så skulle koden om getNextInteger stå nästan 10 sidor bort. Varför? Jag trodde att koden som stod kunde köras. Uppenbarligen är det inte så utan det är först tredje koden som ska köras. Hur ska en nybörjare kunna veta sånt? Jag läser allt som det står och vill inte hoppa i texten. Därför tror jag att allt som står ska gå att köra.
När jag klistrade en den nya koden så fick jag först 7 nya fel. Efter att ha flyttat en } till slutet av all kod istället för i slutet av den första koden så fick jag 2 identiska fel.
DataInputStream Omnämns lägre ner i kapitlen om att läsa text om nummer. Men där är inte jag än heller. Nästa vecka ska jag få låna böcker om java. Hoppas de är bättre på att förklara vad som ska köras och vad som bara är exempel. Men jag gillar möjligheten att kopiera kod från guiden och slippa skriva in den själv. Jag är tacksam på tips om hur jag kan tolka texten och slippa köra kodexempel som inte är menade att köras.
Edit
Här är hela koden som jag döpt till Factorial.java.
När jag klistrade en den nya koden så fick jag först 7 nya fel. Efter att ha flyttat en } till slutet av all kod istället för i slutet av den första koden så fick jag 2 identiska fel.
- Kod: Markera allt
Factorial.java:30: error: cannot find symbol
DataInputStream in = new DataInputStream(System.in);
^
symbol: class DataInputStream
location: class Factorial
DataInputStream Omnämns lägre ner i kapitlen om att läsa text om nummer. Men där är inte jag än heller. Nästa vecka ska jag få låna böcker om java. Hoppas de är bättre på att förklara vad som ska köras och vad som bara är exempel. Men jag gillar möjligheten att kopiera kod från guiden och slippa skriva in den själv. Jag är tacksam på tips om hur jag kan tolka texten och slippa köra kodexempel som inte är menade att köras.
Edit
Här är hela koden som jag döpt till Factorial.java.
- Kod: Markera allt
class Factorial {
public static void main(String args[]) {
int n;
while ((n = getNextInteger()) >= 0) {
System.out.println(factorial(n));
}
} // main ends here
static long factorial (long n) {
int i;
long result=1;
for (i=1; i <= n; i++) {
result *= i;
}
return result;
} // factorial ends here
static int getNextInteger() {
String line;
DataInputStream in = new DataInputStream(System.in);
try {
line = in.readLine();
int i = Integer.valueOf(line).intValue();
return i;
}
catch (Exception e) {
return -1;
}
} // getNextInteger ends here
}
Re: Hjälp med java-programmering
Blir säkert bättre när du kommer igång med böckerna. Okända webbsidor är ofta ofullständiga och innehåller fel om de inte är gjorda av Sun, IBM eller andra tunga namn.
Själv gillar jag helst video tutorials. Finns massvis på nätet, både lagligt och pirat.
Själv gillar jag helst video tutorials. Finns massvis på nätet, både lagligt och pirat.
- barracuber
- Inlägg: 10992
- Anslöt: 2007-02-11
- Ort: Västsverige
Re: Hjälp med java-programmering
barracuber skrev:Själv gillar jag helst video tutorials.
Min ADHD gör att jag tröttnar på sådana, oftast kör de för långsamt för att min hjärna ska kunna hålla igång koncentrationen och inte fara iväg med annat...
Re: Hjälp med java-programmering
Tror du borde stoppa inEyesonly skrev:Men det i sig är ett fel med guiden. Jag ska till att börja läsa om arrays. Om guiden hade varit en bok så skulle koden om getNextInteger stå nästan 10 sidor bort. Varför? Jag trodde att koden som stod kunde köras. Uppenbarligen är det inte så utan det är först tredje koden som ska köras. Hur ska en nybörjare kunna veta sånt? Jag läser allt som det står och vill inte hoppa i texten. Därför tror jag att allt som står ska gå att köra.
När jag klistrade en den nya koden så fick jag först 7 nya fel. Efter att ha flyttat en } till slutet av all kod istället för i slutet av den första koden så fick jag 2 identiska fel.
- Kod: Markera allt
Factorial.java:30: error: cannot find symbol
DataInputStream in = new DataInputStream(System.in);
^
symbol: class DataInputStream
location: class Factorial
DataInputStream Omnämns lägre ner i kapitlen om att läsa text om nummer. Men där är inte jag än heller. Nästa vecka ska jag få låna böcker om java. Hoppas de är bättre på att förklara vad som ska köras och vad som bara är exempel. Men jag gillar möjligheten att kopiera kod från guiden och slippa skriva in den själv. Jag är tacksam på tips om hur jag kan tolka texten och slippa köra kodexempel som inte är menade att köras.
Edit
Här är hela koden som jag döpt till Factorial.java.
- Kod: Markera allt
class Factorial {
public static void main(String args[]) {
int n;
while ((n = getNextInteger()) >= 0) {
System.out.println(factorial(n));
}
} // main ends here
static long factorial (long n) {
int i;
long result=1;
for (i=1; i <= n; i++) {
result *= i;
}
return result;
} // factorial ends here
static int getNextInteger() {
String line;
DataInputStream in = new DataInputStream(System.in);
try {
line = in.readLine();
int i = Integer.valueOf(line).intValue();
return i;
}
catch (Exception e) {
return -1;
}
} // getNextInteger ends here
}
- Kod: Markera allt
import java.io.*;
- Mellanvärld
- Inlägg: 1243
- Anslöt: 2010-11-28
- Ort: Göteborg
Re: Hjälp med java-programmering
Tack Mellanvärld men hur ska jag veta det? Hoppas någon bok kan förklara bättre.
Re: Hjälp med java-programmering
Detta borde ju egentligen ha stått med i exempelkoden, i synnerhet om det är på nybörjarnivå; den som skrev den var nog slarvig.Eyesonly skrev:Tack Mellanvärld men hur ska jag veta det? Hoppas någon bok kan förklara bättre.
- Mellanvärld
- Inlägg: 1243
- Anslöt: 2010-11-28
- Ort: Göteborg
Re: Hjälp med java-programmering
Jag misstänker att sidan är tänkt för de som redan är rätt haj på programmering (och då borde den passa mig, bara jag lyckas komma igång...)
Re: Hjälp med java-programmering
Jag valde att gå vidare så nu har jag kommit fram till något som heter HelloWorldApplet. Den som läser så långt måste skapa en mapp men namnet classes i den mapp som html-filen ligger i och flytta class-filen dit. Jag letade länge efter var class-filen skulle ligga innan jag kom på det. Gör man inte så så ger web-läsaren ett fel om saknad class.