Short condition, Java
•
Java
I want to test whether the current char is', ',' – ',' Or‘‘
if((current != ' ') || (current != '.') || ...)
Any ideas?
Edit:
I'm just allowed to use the methods nextchar and getchar I have to traverse the characters
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
public class woerterZaehlen {
public static void main(String[] args) {
int wordCount = 0;
/* Ab hier dürft ihr eigenen Code einfügen */
char prevIoUs = ' ';
while(hasNextChar()){
char current = getChar();
if(current != )
//if(((current == ' ') || (current == '.') || (current == ',')) && ((prevIoUs != ' ') && (prevIoUs != ','))){
// wordCount++;
//}
prevIoUs = current;
}
/* Ab hier dürft ihr nichts mehr ändern. */
System.out.println("Anzahl der Wörter: " + wordCount);
}
private static InputStreamReader reader;
private static int next = -1;
public static boolean hasNextChar() {
if(next != -1)
return true;
try {
if(reader == null)
reader = new InputStreamReader(new FileInputStream("textdatei.txt"));
next = reader.read();
} catch (IOException e) {
System.out.println("Datei wurde nicht gefunden.");
}
return next != -1;
}
public static char getChar() {
char c = (char) next;
next = -1;
return c;
}
}
Solution
If you don't allow string Indexof, such as:
if (" .,".indexOf(ch) != -1) {
/* do something */
} else {
/* do if none of the above */
}
Use the switch in the image
switch (ch) {
case ' ': case '.': case ',': /* do something */ break;
default: /* do if none of the above */ break;
}
(instead of saving the previous char, you can use Boolean values to indicate whether the previous char is a word boundary or a legal word character)
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
二维码
