2017-01-24 13 views
0

私は貨物管理システムを構築しています。ユーザーが送信元ポートと送信先ポートを入力した後に、送信元と送信先の間で利用可能な中間ポートをリストしたいと思います。しかし、私はそれをどうやって行うのか分かりません。私は各ポートのポート名と距離をテキストファイルに保存しました。各ポートは1行です。 location変数は、ソースとデスティネーションの間の距離を計算するために使用されます。私は、sourceとdestinationの間のポートを見つけるためにposition変数を使いたいと思っていました。テキストファイル内の行のリストの位置を読み取るにはどうすればいいですか

Newes; 10;

ハリータウン; 25;

Truy; 33;

イーストポート; 47;

アテネ; 56;

Nasky; 71;

private int location, location1, position, position1; 
private String source, destination;  

public void choosePort(){ 
    Scanner sc = new Scanner(System.in); 
    int i = 0; 
    System.out.println("Please enter the source."); 
    source = sc.nextLine(); 
    System.out.println("Please enter the destination."); 
    destination = sc.nextLine(); 
    try{ 
     File f = new File("Port.txt"); 
     Scanner file = new Scanner(f); 

     while(file.hasNextLine()){ 
      String line = file.nextLine(); 
      String[] split = line.split(";"); 
      if(split[0].equals(source)){ 
       location = Integer.parseInt(split[1]); 
       position = i; 
      } 
      else if(split[0].equals(destination)){ 
       location1 = Integer.parseInt(split[1]); 
       position1 = i; 
      } 
      i++; 
     } 
     file.close(); 
    } 
    catch(IOException e){ 
     System.out.println(e); 
    } 
+3

ソースコードをテキストではなく画像として貼り付けてください。あなたの現在のコードではうまくいかないのですか? – Berger

+0

すべてのポートが同じ幾何学的線​​上にありますか? – mattm

+0

いいえ、別々の行にあります。 – blackDay

答えて

0

何か素早いもの。

boolean isPrint = false; 
    while(file.hasNextLine()){ 
     String line = file.nextLine(); 
     String[] split = line.split(";"); 
     if(split[0].equals(destination)){ 
      isPrint = false; 
     } 
     if (isPrint) { System.out.println(split[1]);} 
     if(split[0].equals(source)){ 
      print = true; 
     } 
    } 
+0

私の説明は残念ですが、ユーザーが送信元と送信先の入力を入力した後に、中間ポートの名前を表示する必要があります。 – blackDay

+0

がそれに応じて変更されました – Redlab

1

質問が正しく理解されている場合は、送信元と送信先の間にポートを表示する必要があります。たとえば、ユーザーが「Newes」を開始点として選択し、「Trury」を宛先として選択すると、「Harrytown」が中間体として表示されます。これを行うにはいくつかの方法があります。単語のための単語をスキャンする第2のスキャナ、区切り文字、およびそのwhileループ内のprint文を使用します。この後

while(file.hasNextLine()) 
{ 
String line = file.nextLine(); 
Scanner sff = new Scanner(line); 
sff.useDelimiter(";"); // scanner will see ';' and skip over it 
String temp1 = sff.next; 
if (source.equals(temp1)) 
{ 
System.out.println(file.nextLine()); 
} 

、単にコードを完了します。それならば、それは先にマッチするかどうかを確認するために、別のfile.nextLine()を書きますsffが宛先と一致する場合は、最後の行を印刷してbreakステートメントを挿入してください。

関連する問題