2016-09-17 11 views
2

入力ファイル(テキストファイル)が次のように配置されていると仮定します。最初の5つの数字はa、b、c、m、nです。 aとbは、(1,2、... a)、(1,2、... b)となるように、集合R1の(領域、範囲)値です。番号mは、与えられた順序付けられた対が集合R1の可能な関数に従う(または続かない)最初の5つの番号に続く行数(新しい行/コード)である。数nは、集合R2(1,2、... b)、(1,2、... c)内の関数に従う規則に従う(または消さない)行数(m行後)のものです。入力ファイルから数値を抽出し、必要な出力にどのように使用しますか?

入力ファイル例:今

(1、3)

(1、2)

(4、5)

Iはその特定のフォーマットのテキストファイルを取得し、その出力を与えるJavaプログラムを作成しなければなりません。

  1. はい、セットR1の順序付きペアが関数で、そうでない場合はNOです。

  2. はい、セットR2の順序付きペアが関数であればいいです。

  3. はい、セットの場合はの順序付きペアが機能しています。関数でなければNAを返します。それが関数であり、ではない場合はNOです。

  4. はい、セットR2の順序付けられたペアが機能している場合。関数でなければNAを返します。それが関数であり、ではない場合はNOです。

  5. 両方とも関数の場合は、関数g◦fを計算して、 というペアとして出力します。ここで、 の最初の座標はソート順です。たとえば、g ◦fが1〜10,2〜4,3〜15の場合は、コードはこの部分に出力する必要があります。 は3行に続きます。 (1,10) (2,4) (3,15) これらのいずれかが関数でない場合は、この部分にNAを出力するだけです。

これまでのところ、私が行う方法を知っているすべての出力として、印刷され、入力ファイルで指定したすべてのデータ..私は、入力ファイルから特定の部分を選択してかどうかを確認するためにそれを使用する方法を知りません機能は特定のドメインのために可能です..どのように私はそれを行うだろう..?あなたはString num = input.nextLine();を持って

import java.io.FileNotFoundException; 
import java.util.*; 
import java.io.File; 

public class prob1 { 
    public static void main(String[] args) { 
     java.io.File file = new java.io.File("TestCase.txt"); 

     try { 
      Scanner input = new Scanner(file); 
      while (input.hasNext()) { 
       String num = input.nextLine(); 
       System.out.println(num); 
      } 
     } catch (FileNotFoundException e) { 
      System.err.format("File does not exist\n"); 
     } 
    } 
} 
+0

の場合:あなたのような何かをするかもしれません。例えば

あなたは

を言ったので、最初の5つの数字は、B、Cになり、mおよびnは

'java.io.File'をインポートしたので、それを参照するために完全修飾名を使う必要はありません。スコープ内に矛盾するクラスが存在しない限り、 'File'だけで十分です。 – bcsb1001

+0

入力ファイルから数値を抽出するには、[String.split](https://docs.oracle.com/javase/7/docs/api/java/lang/String.html)の組み合わせを使用する必要があります。 #split(java.lang.String))および[Integer.parseInt](http://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html#parseInt-java.lang.String - ) – UnholySheep

答えて

0

ので、今あなただけStringクラスのメソッドを使用して、このnum文字列を操作する必要があります。

int a = -1, b = -1, c = -1, m = -1, n = -1; 
... 
while (input.hasNext()) { 
    String num = input.nextLine().trim(); //I added trim to remove any extraneous whitespace 
    //I'm assuming if one variable has not been initialized then none 
    // have since they all appear on the same line of the input file. 
    //Also assuming that a, b, c, m, and n will always be positive 
    // once they have been initialized. 
    if(a < 0){ 
     String[] parts = num.split(" "); 
     if(parts.length == 5){ 
      a = Integer.parseInt(parts[0]); 
      b = Integer.parseInt(parts[1]); 
      c = Integer.parseInt(parts[2]); 
      m = Integer.parseInt(parts[3]); 
      n = Integer.parseInt(parts[4]); 
     }else{ 
      //There's a problem - more or less items than expected 
      // so you will need to handle that somehow. 
     } 
    } 
    ... 
    //Processing for the ordered pairs... 
    ... 
    System.out.println(num); 
} 
... 
//You'll probably want to handle the case where you get a 
// NumberFormatException when the call to Integer.parseInt 
// fails. This can happen if the string passed to parseInt 
// does not contain a valid integer value. 
関連する問題