26. november 2008 - 20:58Der er
10 kommentarer og 1 løsning
hjælp til for løkke.
Hej eksperter.
Jeg har skrevet følgende kode (Det er et udsnit):
for(String ord : findOrd) { int iCounter; //Læser teksten fra en karakter-input-stream, og åbner strem med URL hjemmeside BufferedReader textPaaHjemmeside = new BufferedReader(new InputStreamReader(connection.getInputStream())); //Mens sLine ikke er null skal sLine udskrives i textArea1. sb.append(\r\n), \n er en linefeed karakter, \r er en return karakter, linieskift er \n i Unix filer (nogle Windows programmer forstår det dog også), \r\n i Windows filer, skærmbilleder, netværks protokoller while((sLine = textPaaHjemmeside.readLine()) != null) {
// Laver HELE teksten til lowercase for at udelukke at indexOf er casesensitive sLine = sLine.toLowerCase(); //sLine er HTML linjeteksten
while(iIndex < sLine.length() && (iNewindex = sLine.indexOf(ord, iIndex)) != -1) { iCounter++; // tager int counter og ligger én til sig selv. iIndex = iNewindex + ord.length(); }
} sTCPAnswer = "Ordet: \"" + ord + "\" er fundet: " + iCounter + " gange!"; // Udskriver hvor mange gange ordet er blevet fundet.
Problemet er at dette stykke kode skal tælle nogle ord i en string ud fra et array.
Det virker fint på det første ord. Hvis det første ord er 5 gange i en tekst så, så skriver den også at ordet er fundet 5 gange. Problemet er så at alle efterfølgende ord ikke bliver talt, men de tager bare værdien af iCounter fra det første ord, så alle ord står der er blevet fundet 5 gange, hvis det første ord blev fundet 5 gange.
Har i nogle ideer?
Jeg sender eller skriver gerne hele koden op til dem som ville have det. Det er bare en hele del.
while(iIndex < sLine.length() && (iNewindex = sLine.indexOf(ord, iIndex)) != -1) { iCounter++; // tager int counter og ligger én til sig selv. iIndex = iNewindex + ord.length(); }
iIndex = 0; iNewindex = 0;
sTCPAnswer = "Ordet: \"" + ord + "\" er fundet: " + iCounter + " gange!"; // Udskriver hvor mange gange ordet er blevet fundet.
Hov - ikke nemt at se hvad jeg mener, her er den igen
for(String ord : findOrd) { int iCounter; //Læser teksten fra en karakter-input-stream, og åbner strem med URL hjemmeside BufferedReader textPaaHjemmeside = new BufferedReader(new InputStreamReader(connection.getInputStream())); //Mens sLine ikke er null skal sLine udskrives i textArea1. sb.append(\r\n), \n er en linefeed karakter, \r er en return karakter, linieskift er \n i Unix filer (nogle Windows programmer forstår det dog også), \r\n i Windows filer, skærmbilleder, netværks protokoller while((sLine = textPaaHjemmeside.readLine()) != null) {
// Laver HELE teksten til lowercase for at udelukke at indexOf er casesensitive sLine = sLine.toLowerCase(); //sLine er HTML linjeteksten
while(iIndex < sLine.length() && (iNewindex = sLine.indexOf(ord, iIndex)) != -1) { iCounter++; // tager int counter og ligger én til sig selv. iIndex = iNewindex + ord.length(); } iIndex = 0; iNewindex = 0;
} sTCPAnswer = "Ordet: \"" + ord + "\" er fundet: " + iCounter + " gange!"; // Udskriver hvor mange gange ordet er blevet fundet.
Svaret fra server: Ordet: "google" er fundet: 1 gange! Svaret fra server: Ordet: "test" er fundet: 1 gange! Svaret fra server: Ordet: "finans" er fundet: 1 gange!
Det er hvad jeg får. Jeg ved med sikkerhed at ordet finans findes 5 gange.
for(String ord : findOrd) { int iCounter; //Læser teksten fra en karakter-input-stream, og åbner strem med URL hjemmeside BufferedReader textPaaHjemmeside = new BufferedReader(new InputStreamReader(connection.getInputStream())); //Mens sLine ikke er null skal sLine udskrives i textArea1. sb.append(\r\n), \n er en linefeed karakter, \r er en return karakter, linieskift er \n i Unix filer (nogle Windows programmer forstår det dog også), \r\n i Windows filer, skærmbilleder, netværks protokoller while((sLine = textPaaHjemmeside.readLine()) != null) {
// Laver HELE teksten til lowercase for at udelukke at indexOf er casesensitive sLine = sLine.toLowerCase(); //sLine er HTML linjeteksten
while(iIndex < sLine.length() && (iNewindex = sLine.indexOf(ord, iIndex)) != -1) { iCounter++; // tager int counter og ligger én til sig selv. iIndex = iNewindex + ord.length(); } iIndex = 0; iNewindex = 0;
sTCPAnswer = "Ordet: \"" + ord + "\" er fundet: " + iCounter + " gange!"; // Udskriver hvor mange gange ordet er blevet fundet. }
BufferedReader textPaaHjemmeside = new BufferedReader(new InputStreamReader(connection.getInputStream()));
for(String ord : findOrd){ int iCounter;
while((sLine = textPaaHjemmeside.readLine()) != null) { sLine = sLine.toLowerCase(); //sLine er HTML linjeteksten
while(iIndex < sLine.length() && (iNewindex = sLine.indexOf(ord, iIndex)) != -1) { iCounter++; // tager int counter og ligger én til sig selv. iIndex = iNewindex + ord.length(); }
iIndex = 0; iNewindex = 0;
}
sTCPAnswer = "Ordet: \"" + ord + "\" er fundet: " + iCounter + " gange!"; answer.add(sTCPAnswer); textPaaHjemmeside.close(); }
public class Antal{ String ord = ""; int antal =0;
// Ret 'Amtal' til Antal, jeg har skrevet et 'm' public Amtal(String o, int i){ ord = 0; antal = i; }
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.