操作的是file2还是file1,记录到一个变量里,然后如果输入的值与记录的不一致,就重新new呗。

解决方案 »

  1.   

    <key,value>,可以根据文件名的特点来找,
    或是可以专门搞个文件作为存放值与文件的映射关系
      

  2.   


    System.out.println("the file");
    Scanner scanner = new Scanner(System.in);
    int i = scanner.nextInt();


    BufferedReader br = new BufferedReader(new FileReader("C:\\Users\\Administrator\\Desktop\\file1.txt"));
        String s = null;
        while((s=br.readLine())!= null){
    //      String [] arr = s.split("\\s+");
         System.out.println(s);我想实现 输入的i和FileReader的文件一致, 一个i对应一个fileReader的file,你说的我还是有点不太清楚。
    还有就是如何把String转变成一个二维数组。想把输入的文件的每一行和每一列放在一个二维数组里,方便以后的条用。
    比如
    A 1 2
    B 3 4
    想实现 arr[0][0] = A, arr[1][0] = B这个又该如何实现呢,谢谢啦~
      

  3.   

    首先,你是要根据你的输入,读取不同的文件:
    BufferedReader br = new BufferedReader(new FileReader("C:\\Users\\Administrator\\Desktop\\file1.txt"))
    你的这个方法来读取的话,你可以尝试:"C:\\Users\\Administrator\\Desktop\\file"+"i"+".txt");如果你的文件名字确定了是file(i)这样的话,这是可以读取到的。
    第二个,你的String数据要以二维数组的方式保存下来,就是一个基本的二维数组声明。如果你有比较特殊的需求,你的需求要明确点。
      

  4.   


    文件那个可以实现了,就是数组不知道如果处理。实在是搞不定了,请求帮助。 System.out.println("the file");
    Scanner scanner = new Scanner(System.in);
    int i = scanner.nextInt();


    BufferedReader br = new BufferedReader(new FileReader("C:\\Users\\Administrator\\Desktop\\file"+i+".txt"));
        String s = null;
        String ss = null;
        while((s=br.readLine())!= null){
         System.out.println(s);     }
    //     BufferedReader br = new BufferedReader(new FileReader("C:\\Users\\Administrator\\Desktop\\file"+i+".txt"));
    //     String s = null;
        while((ss=br.readLine())!= null){
         System.out.println(ss);
        
      /*  for(int j = 0; j < s.length(); j ++){
         String [] arr = s.split("\\s+");
         System.out.print(arr[j]);*/
         }
        }
         文件的内容是
    A 1 2
    B 2 4现在有个问题就是,s可以输出文件的内容,但是ss输出的内容是空。这个有点不明白我想实现的是,第一行的三个元素(A, 1, 2)分别和第二行的三个元素(B, 2, 4)。 也就是 A和B比较是否相等,1 和2 比较, 2 和4 比较。 想了好久都没有想到改怎么实现。这两个是不同的步骤。先输出文件的内容,然后再比较各个元素。
    谢谢了
      

  5.   

    根据输入,选择文件打印,这样行不    public static void main(String[] args) {
            System.out.println("the file");
            Scanner scanner = new Scanner(System.in);        // 为-1时,结束文件打印
            int i;
            while (-1 != (i = scanner.nextInt())) {
                printFile(i);
            }
        }    private static void printFile(int i) {
            BufferedReader br = null;
            try {
                br = new BufferedReader(new InputStreamReader(new FileInputStream((new File(
                        "C:\\Users\\Administrator\\Desktop\\file" + i + ".txt")))));
                String s = null;
                while ((s = br.readLine()) != null) {
                    System.out.println(s);
                }
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    if (null != br) {
                        br.close();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }    }
      

  6.   

    我从头看到尾,也许是了解你的意思了,第一个问题,是不是就是输入不同的数字,那么i/o流去读不同的文件。是吧~~,这个可以帮你的输入的数字保存起来,然后拼成文件路径的,上面有实现了。第二问题,就是读一个文件的时候,也许他有两行记录,你想把这两行记录分别记录下来,然后对比,是吧~~你写的那段代码是有问题的
    System.out.println("the file");
    Scanner scanner = new Scanner(System.in);
    int i = scanner.nextInt();


    BufferedReader br = new BufferedReader(new FileReader("C:\\Users\\Administrator\\Desktop\\file"+i+".txt"));
        String s = null;
        String ss = null;
        while((s=br.readLine())!= null){
         System.out.println(s);     }
    //     BufferedReader br = new BufferedReader(new FileReader("C:\\Users\\Administrator\\Desktop\\file"+i+".txt"));
    //     String s = null;
        while((ss=br.readLine())!= null){
         System.out.println(ss);
        
      /*  for(int j = 0; j < s.length(); j ++){
         String [] arr = s.split("\\s+");
         System.out.print(arr[j]);*/
         }
        }问题就在你这两个while循环,因为你的第一个循环都把文本读到了最后,然后才跳出循环的,你第二循环还去读这个流,不过你的流还是br,这个已经都读到了最后行了,所以进不去这个循环的。所以ss依然是null
    .不过你用数组来存字符,总感觉不妥。因为你不知道你的文件里有多少行,有多少列,不过可以帮你实现
    BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(new File("d:\\aaa.txt"))));
    List<String>  str = new ArrayList<String>() ;
    String[] temp1 = null;
    String[] temp2 = null;
    String input = null;
    int i = 0 ;
    while((input=br.readLine()) != null){
    //把每一行存到你一个大的列表里面
    str.add(input);
    i++;
    }

    //下面是你想去那任意来两行两比较行来比较
    //现把两行的字符串分别赋值到两个变量中比如第一行第二行比较
    //为了兼容性,记得要判断i是不是大于1,不然下面有可能会报溢出错误
    if(i>0){
    temp1 = str.get(0).split("\\s+");
    temp2 = str.get(1).split("\\s+");
    //下面就是你想要的实现把~~~
    for(int j=0;j<temp1.length;j++){
    if(temp1[j].equals(temp2[j])){
    System.out.println("第"+j+"列相同");
    }else{
    System.out.println("第"+j+"列不相同");
    }
    }
    }
    希望对你有帮助~~~
        
      

  7.   


    文件那个可以实现了,就是数组不知道如果处理。实在是搞不定了,请求帮助。 System.out.println("the file");
    Scanner scanner = new Scanner(System.in);
    int i = scanner.nextInt();


    BufferedReader br = new BufferedReader(new FileReader("C:\\Users\\Administrator\\Desktop\\file"+i+".txt"));
        String s = null;
        String ss = null;
        while((s=br.readLine())!= null){
         System.out.println(s);     }
    //     BufferedReader br = new BufferedReader(new FileReader("C:\\Users\\Administrator\\Desktop\\file"+i+".txt"));
    //     String s = null;
        while((ss=br.readLine())!= null){
         System.out.println(ss);
        
      /*  for(int j = 0; j < s.length(); j ++){
         String [] arr = s.split("\\s+");
         System.out.print(arr[j]);*/
         }
        }
         文件的内容是
    A 1 2
    B 2 4现在有个问题就是,s可以输出文件的内容,但是ss输出的内容是空。这个有点不明白我想实现的是,第一行的三个元素(A, 1, 2)分别和第二行的三个元素(B, 2, 4)。 也就是 A和B比较是否相等,1 和2 比较, 2 和4 比较。 想了好久都没有想到改怎么实现。这两个是不同的步骤。先输出文件的内容,然后再比较各个元素。
    谢谢了
    ss不输出的原因是br的文件指针已经到达文件的末尾。所以你的ss的值一直未null,所以不会打印。
      

  8.   


    这个只能打印出文件的内容~不能实现数组啊~
    既然能打印出来,就一定有办法实现赋值到数组的,LZ也要自己思考下。那个printFile,你可以return一个数组,或者入参多传递一个数组,在里面做赋值操作。
      

  9.   

    实现数组的,输入
    1 2 3 4
    4 5
    6
    就会变成二维数组
    新的一行输入-1就表示完毕
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Scanner;public class TestString2Array {
        public static void main(String[] args) {
            Integer[][] a = getArrays();        for (Integer[] i : a) {
                for (int j : i) {
                    System.out.print(j + " ");
                }
                System.out.println();
            }    }    public static Integer[][] getArrays() {
            Scanner scan = new Scanner(System.in);
            List<Integer[]> list = new ArrayList<Integer[]>();
            while (scan.hasNext()) {
                String line = scan.nextLine();
                if (line.equals("-1")) {
                    break;
                }
                Scanner lineScan = new Scanner(line);
                List<Integer> lineList = new ArrayList<Integer>();
                while (lineScan.hasNext()) {
                    int i = lineScan.nextInt();
                    lineList.add(i);
                }
                list.add(lineList.toArray(new Integer[lineList.size()]));
            }
            Integer[][] array = new Integer[list.size()][];
            list.toArray(array);
            return array;
        }}
      

  10.   

    System.out.println("the file");
            Scanner scanner = new Scanner(System.in);
            int i = scanner.nextInt();
            try {
    BufferedReader br = new BufferedReader(new FileReader("C:\\Users\\Administrator\\Desktop\\file"+i+".txt"));
    String s =null;
    StringBuilder sb=new StringBuilder();
    while((s=br.readLine())!=null)
    {
    System.out.println(s);

    if(s!=null)
    {
    sb.append(s+'\r');
    }

    }

    String temp = sb.toString();
    String[] array=temp.split("\\r");
    String[] s1=array[0].split("\\s+");
    String[] s2=array[1].split("\\s+");
    for(int k=0;k<s1.length;k++)
    {
    System.out.println(s1[i].equals(s2[i]));

    }


    } catch (IOException e) {
    e.printStackTrace();
    }
        

    看看这个行吗?