-1

たとえば、701234567 のような数値が Java の配列の要素であるかどうかを確認したいと考えています。このために、私のコードは、7 で始まり 9 桁の番号が、5 つの要素を持つ配列 "numbercall.txt" の要素であるかどうかを検索します。これは私のテキスト ファイルです: numbercall.txt [ 702345678, 714326578, 701234567, 791234567,751234567] これは私のコードです:

        import java.io.BufferedReader;
        import java.io.DataInputStream;
        import java.io.FileInputStream;
        import java.io.IOException;
        import java.io.InputStreamReader;
        import java.util.ArrayList;
        import java.util.List;
        import java.util.regex.Matcher;
        import java.util.regex.Pattern;

        public class TestNumberLt  {

            static String[] arr= null;
            String filename = "fichiers/numbercall.txt";
            static String a = null ;
            static List<String> list = new ArrayList<String>();
            public static void main(String [] args) throws IOException{
                FileInputStream fstream_school = new FileInputStream(filename); 
                DataInputStream data_input = new DataInputStream(fstream_school); 
                BufferedReader buffer = new BufferedReader(new InputStreamReader(data_input)); 
                String str_line; 
                while ((str_line = buffer.readLine()) != null) 
                { 
                    str_line = str_line.trim(); 
                    if ((str_line.length()!=0))  
                    { 
                        list.add(str_line);
                                } 
                }
                int  b = 773214576;
                   //convert the arraylist to a array
                        arr = (String[])list.toArray(new String[list.size()]);
                Pattern p = Pattern.compile("^7[0|6|7][0-9]{7}$");
                Matcher m ; 
                    //a loop for verify if a number exist in this array
                for (int j = 0; j < list.size();)
                {
                    System.out.print(" "+list.get(j)+ "  ");
                    m = p.matcher(list.get(j));
                    /*while(m.find())
                    System.out.println(m.group());*/
                            if(list.get(j).equals(b))
                        { 
                            System.out.println("Trouvé "+list.get(j));
                            break;
                        }
                    else 
                    {
                        System.out.println("ce numéro ("+b+") n'existe pas!");
                        }
                    break;
                }

            }
        }
4

3 に答える 3

0

Guava を使用した別の答え: (この場合、実際には必要ありません。単純に String オブジェクトから split() メソッドを使用できますが、Guava の読みやすさと戻り値のように)

package stackoverflow;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

import com.google.common.base.Splitter;

public class RegexExample {

String filename = "numbercall.txt";

public boolean isInList(String numberToCheck) throws IOException {
    BufferedReader file = loadFile();
    for (String number : extractNumberListFrom(file)) {
        if (number.trim().equals(numberToCheck)) {
            return true;
        }
    }
    return false;
}

private Iterable<String> extractNumberListFrom(BufferedReader buffer) throws IOException {
    StringBuilder numberList = new StringBuilder();
    String line;
    while ((line = buffer.readLine()) != null) {
        numberList.append(line);
    }
    return Splitter.on(",").split(numberList.toString());
}

private BufferedReader loadFile() {
    InputStream fstream_school = RegexExample.class.getResourceAsStream(filename);
    BufferedReader buffer = new BufferedReader(new InputStreamReader(fstream_school));
    return buffer;
}
}
于 2013-05-15T14:34:36.783 に答える
0

このように単純に実行します

        String str_line= "702345678,714326578,701234567,791234567,751234567";
        String[] strArray = str_line.split(",");
        String key = "702345678";
        for(String v:strArray) {
            if(v.equals(key)) {
                System.out.println("found");
            }
        }
于 2013-05-15T13:32:10.780 に答える
0

bあなたが何を望んでいるのかよくわかりませんが、配列のインデックスだけが必要な場合は、次のようにしてください。

public static void main(String [] args) throws IOException{
    ...
    int  b = 773214576;
    int tmp = list.indexOf(b+"");
    if(tmp!=-1) {
        System.out.println("Trouvé "+ b + " à l'index " + tmp);
    } else {
        System.out.println("Ce numéro ("+b+") n'existe pas!");
    }
    ...
}
于 2013-05-15T13:35:17.043 に答える