根据输入,选择文件打印,这样行不 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(); } } }
我从头看到尾,也许是了解你的意思了,第一个问题,是不是就是输入不同的数字,那么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);
或是可以专门搞个文件作为存放值与文件的映射关系
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这个又该如何实现呢,谢谢啦~
BufferedReader br = new BufferedReader(new FileReader("C:\\Users\\Administrator\\Desktop\\file1.txt"))
你的这个方法来读取的话,你可以尝试:"C:\\Users\\Administrator\\Desktop\\file"+"i"+".txt");如果你的文件名字确定了是file(i)这样的话,这是可以读取到的。
第二个,你的String数据要以二维数组的方式保存下来,就是一个基本的二维数组声明。如果你有比较特殊的需求,你的需求要明确点。
文件那个可以实现了,就是数组不知道如果处理。实在是搞不定了,请求帮助。 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 比较。 想了好久都没有想到改怎么实现。这两个是不同的步骤。先输出文件的内容,然后再比较各个元素。
谢谢了
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();
}
} }
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+"列不相同");
}
}
}
希望对你有帮助~~~
文件那个可以实现了,就是数组不知道如果处理。实在是搞不定了,请求帮助。 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,所以不会打印。
这个只能打印出文件的内容~不能实现数组啊~
既然能打印出来,就一定有办法实现赋值到数组的,LZ也要自己思考下。那个printFile,你可以return一个数组,或者入参多传递一个数组,在里面做赋值操作。
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;
}}
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();
}
看看这个行吗?