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.
Skal virksomheder stå stærkere mod angreb og kunne udvikle sig, skal sikkerhed, drift og forretning tænkes sammen. Det er tanken bag Jysk IT’s ambition om at skabe en “sikker fremtid” for kunderne.
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.