操作的是file2还是file1,记录到一个变量里,然后如果输入的值与记录的不一致,就重新new呗。
解决方案 »
- 求大神帮助C语言的函数用java实现主要是object那个不是太明白!~
- Java JFrame 关于setDefaultLookAndFeelDecorated鼠标监听
- dom解析xml出新问题
- 警告: Failed loading seeding list from...
- 初学JAVA的一个关于屏幕输出的问题
- Applet 显示不出来?faint!!!!!!!!!!!!!!!!!!!!!!
- eclipse的svn视图下想拷贝类的全称怎么做?
- 怎样用swing 实现在读取一个很大的文件的同时弹出一个窗口显示读取进度?
- 帮忙,求助!!
- Java中服务器客户端传送信息
- 如何实现自定义tcp报文的首部呢?
- Java异常信息输出到磁盘错误信不部统一
或是可以专门搞个文件作为存放值与文件的映射关系
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();
}
看看这个行吗?