私が持っているクラスの場合、引数を取得する必要があります。これは、各行に異なる URL を持つファイルであり、行を実行して、各 URL が異なるスキームと異なるドメインを持つ回数をカウントします。引数がない場合は、入力されたものを直接スキャンする必要があります。最後にprintlnsを除くすべてを含む次のコードを取得しました。
import java.util.Scanner;
public class P1 {
public static void main(String[] args){
int fileLinesCt=0, totalLinesCt=0;
int httpCt=0, httpsCt=0, ftpCt=0, otherSchemeCt=0;
int eduCt=0, orgCt=0, comCt=0, otherDomainCt=0;
String url, scheme, schemeSP, domain = null;
Scanner scan = null;
if(!args.equals(null)){
for (int j=0; j<args.length; j++){
scan = new Scanner(args[j]);
fileLinesCt = 0;
while (!"end".equals(scan.nextLine())){
url = scan.nextLine();
String[] parts = url.split("//://");
scheme = parts[0];
schemeSP = parts[1];
if ("http".equals(scheme))
httpCt++;
if ("https".equals(scheme))
httpsCt++;
if ("ftp".equals(scheme))
ftpCt++;
else otherSchemeCt++;
for (int i=0; i<schemeSP.length(); i++){
if (schemeSP.charAt(j) == '.')
domain = schemeSP.substring(j,'/');
if (schemeSP.charAt(j) == '/')
break;
}
if ("edu".equals(domain))
eduCt++;
if ("org".equals(domain))
orgCt++;
if ("com".equals(domain))
comCt++;
else otherDomainCt++;
fileLinesCt++;
totalLinesCt++;
if (fileLinesCt == 1)
System.out.println(">> Got " + fileLinesCt + " line from " + scan);
else System.out.println(">> Got " + fileLinesCt + " lines from " + scan);
}
}
}
else {
Scanner scanner = new Scanner(System.in);
fileLinesCt = 0;
while (!scanner.next().equals("end")){
url = scanner.next();
String[] parts = url.split("//://");
scheme = parts[0];
schemeSP = parts[1];
if ("http".equals(scheme))
httpCt++;
if ("https".equals(scheme))
httpsCt++;
if ("ftp".equals(scheme))
ftpCt++;
else otherSchemeCt++;
for (int j=0; j<schemeSP.length(); j++){
if (schemeSP.charAt(j) == '.')
domain = schemeSP.substring(j,'/');
if (schemeSP.charAt(j) == '/')
break;
}
if ("edu".equals(domain))
eduCt++;
if ("org".equals(domain))
orgCt++;
if ("com".equals(domain))
comCt++;
else otherDomainCt++;
fileLinesCt++;
totalLinesCt++;
if (fileLinesCt == 1)
System.out.println(">> Got " + fileLinesCt + " line from " + scan);
else System.out.println(">> Got " + fileLinesCt + " lines from " + scan);
}
}
コードを実行すると、次のエラーが表示されます
「コマンド ラインでファイルを一覧表示するときにプログラムが失敗しました。
スレッド "main" java.util.NoSuchElementException で例外が発生しました: 行が見つかりません」 これは、次の行をスキャンしようとしたときに 15 行目で発生します。
次の行のスキャンを停止するために、私は何を間違っていますか?