さて、基本的にここでしなければならないことは、単語を含むファイルを読み取ることです。これらの単語の一部には、先頭と末尾に引用符、ピリオド、ハイフンなどの特殊文字が含まれています。ファイル内のすべての単語を数え、特殊文字の数を数え、それらを削除し、各単語を特殊文字なしで別の行に出力する必要があります。
これで目的がわかりましたので、以下のコーディングを使用して私の思考プロセスを説明したいと思います。最初は、switch ステートメントを使用して特定の文字を削除する方法を考えていました。switch ステートメントでは数字しか使用できないと思うので、ASCII テーブルの文字に 10 進数を使用するのが最善の方法だと思いました。行く。それで私はそれをしました、そしてそれはあるべき姿ですべての単語を出力します。ただし、すべての特殊文字を数え上げると、完全に間違ってしまい、合計数の一部しか数えられません。なぜこれが正確に行われているのか、私は途方に暮れているので、どんな助けでも大歓迎です!
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
public class FileWords
{
public static void main( String [] args ) throws IOException
{
Scanner scan = new Scanner(System.in);
System.out.print("Please enter a file name: ");
File file = new File(scan.next() );
Scanner scanFile = new Scanner(file);
String fileContent;
int wordNum = 0, quote = 0, dubQuote = 0, semi = 0, colon = 0, period = 0, comma = 0, hyphen = 0, exclamation = 0, dollar = 0, question = 0, words = 0;
do
{
fileContent = scanFile.next();
wordNum = fileContent.length();
switch ( (fileContent.charAt(0)) )
{
case 34:
dubQuote ++;
fileContent = fileContent.substring( 1 , wordNum + fileContent.indexOf(" ") );
break;
case 36:
dollar++;
fileContent = fileContent.substring( 1 , wordNum + fileContent.indexOf(" ") );
break;
case 39:
quote++;
fileContent = fileContent.substring( 1 , wordNum + fileContent.indexOf(" ") );
break;
case 46:
period++;
fileContent = fileContent.substring( 1 , wordNum + fileContent.indexOf(" ") );
break;
default:
break;
}
wordNum = fileContent.length();
switch ( fileContent.charAt(wordNum - 1) )
{
case 33:
exclamation++;
words++;
fileContent = fileContent.substring( 0 , wordNum + fileContent.indexOf(" ") );
break;
case 34:
dubQuote ++;
words++;
fileContent = fileContent.substring( 0 , wordNum + fileContent.indexOf(" ") );
break;
case 39:
quote++;
words++;
fileContent = fileContent.substring( 0 , wordNum + fileContent.indexOf(" ") );
break;
case 44:
comma++;
words++;
fileContent = fileContent.substring( 0 , wordNum + fileContent.indexOf(" ") );
break;
case 45:
hyphen++;
words++;
fileContent = fileContent.substring( 0 , wordNum + fileContent.indexOf(" ") );
break;
case 46:
period++;
words++;
fileContent = fileContent.substring( 0 , wordNum + fileContent.indexOf(" ") );
break;
case 58:
colon++;
words++;
fileContent = fileContent.substring( 0 , wordNum + fileContent.indexOf(" ") );
break;
case 59:
semi++;
words++;
fileContent = fileContent.substring( 0 , wordNum + fileContent.indexOf(" ") );
break;
case 63:
question++;
words++;
fileContent = fileContent.substring( 0 , wordNum + fileContent.indexOf(" ") );
break;
default:
words++;
break;
}
System.out.println(fileContent);
} // end of do
while (scanFile.hasNext());
System.out.println();
System.out.println("Double Quotes: " + dubQuote);
System.out.println("Single Quotes: " + quote);
System.out.println("Semi-Colons: " + semi);
System.out.println("Colons: " + colon);
System.out.println("Periods: " + period);
System.out.println("Commas: " + comma);
System.out.println("Hyphens: " + hyphen);
System.out.println("Exclamation Points: " + exclamation);
System.out.println("Question Marks: " + question);
System.out.println("Dollar Signs: " + dollar);
System.out.println("Words Found: " + words);
}
}