当前位置:编程学习 > JAVA >>

如何从文本文件读取字符串,保存在数组中?

老师出了个题目,判断给出的合取范式是否为可满足的,他给了很多个文本文件,要求从文本文件读取数据,例如一个文本中的内容是4 41 -2 -3-1 -44-2 -3 4,也就是我要输出
4
4
1 -2 -3
-1 -4
4
-2 -3 4
第一个4代表合取范式中有4个变量
第二个4表示合取范式中有4个析取式
下面的四行代表着4个析取式,数字表示第几个变量,负号代表“非”。
我想知道如何把文件中的这一行存到数组中,能输出成下面的6行?以及有没有合适的方法处理合取范式可满足这个问题的方法? java 字符串 文本读取 数组 --------------------编程问答--------------------
引用 楼主 Kitty19872010 的回复:
老师出了个题目,判断给出的合取范式是否为可满足的,他给了很多个文本文件,要求从文本文件读取数据,例如一个文本中的内容是4 41 -2 -3-1 -44-2 -3 4,也就是我要输出
4
4
1 -2 -3
-1 -4
4
-2 -3 4
第一个4代表合取范式中有4个变量
第二个4表示合取范式中有4个析取式
下面的四行代表着4个析取式,数字表示第几个变量,负号代表“非”。
我想知道如何把文件中的这一行存到数组中,能输出成下面的6行?以及有没有合适的方法处理合取范式可满足这个问题的方法?


呵呵,是离散数学吧?
“4 41 -2 -3-1 -44-2 -3 4”这个字符串是里面的数值是根据空格号分隔的吧,那么可以根据空格号把字符串分割,然后存入数组。
public Cut  
{
                   File file = new File("path");//你文件的路径
              StringBuffer buffer= new StringBuffer();
              BufferedReader reader = null;
                   try
             {
                         reader = new BufferedReader(new FileReader(file));
                         String text = null; //如果你假设文本只有一行,那么text的值就为:“4 41 -2 -3-1 -44-2 -3 4”
                         while ((text = reader.readLine()) != null)
                          {
                                      //可以将文本内容输出来。
                           } 
                    } catch (FileNotFoundException e)
                     {       
                                  e.printStackTrace();  
                      } catch (IOException e)    
                       {     
                                   e.printStackTrace();     
                        } finally  
                         {          try        
                                    {      
                                                  if (reader != null)    
                                                   {        
                                                               reader.close();  
                                                   }  
                                     } catch (IOException e)      
                                     {     
                                                e.printStackTrace();  
                                       } 
                        String array[] = text.split(" ");  //text就是获得的文本内容,“”里面是一个空格!
                         for(int i = 0; i < array.length; i++)
                       {  
                                     System.out.printf("array[%d] = %s%n", i, strs[i]);  
                       }


希望我没理解错你的意思,哈哈哈。 --------------------编程问答-------------------- 不会吧,代码编辑成这样,sorry! --------------------编程问答-------------------- 这个空格不是分割的条件,所以只能一个char一个char的判断,先把前两个4取出建立数组,

然后再处理剩下的,规律是,提取下一个char,如果是负号就接着再提一个,储存到临时string里,
接着往下读,如果是空格,表明这一行还没读完,
如果不是空格表明读完了, 存入数组,重复上一步骤。
--------------------编程问答--------------------
引用 3 楼 lishikai500 的回复:
这个空格不是分割的条件,所以只能一个char一个char的判断,先把前两个4取出建立数组,

然后再处理剩下的,规律是,提取下一个char,如果是负号就接着再提一个,储存到临时string里,
接着往下读,如果是空格,表明这一行还没读完,
如果不是空格表明读完了, 存入数组,重复上一步骤。

后面的数据是保存着4*4的二维数组中呢,还是其他存储方式? --------------------编程问答--------------------
引用 1 楼 xiang_pao 的回复:
Quote: 引用 楼主 Kitty19872010 的回复:

老师出了个题目,判断给出的合取范式是否为可满足的,他给了很多个文本文件,要求从文本文件读取数据,例如一个文本中的内容是4 41 -2 -3-1 -44-2 -3 4,也就是我要输出
4
4
1 -2 -3
-1 -4
4
-2 -3 4
第一个4代表合取范式中有4个变量
第二个4表示合取范式中有4个析取式
下面的四行代表着4个析取式,数字表示第几个变量,负号代表“非”。
我想知道如何把文件中的这一行存到数组中,能输出成下面的6行?以及有没有合适的方法处理合取范式可满足这个问题的方法?


呵呵,是离散数学吧?
“4 41 -2 -3-1 -44-2 -3 4”这个字符串是里面的数值是根据空格号分隔的吧,那么可以根据空格号把字符串分割,然后存入数组。
public Cut  
{
                   File file = new File("path");//你文件的路径
              StringBuffer buffer= new StringBuffer();
              BufferedReader reader = null;
                   try
             {
                         reader = new BufferedReader(new FileReader(file));
                         String text = null; //如果你假设文本只有一行,那么text的值就为:“4 41 -2 -3-1 -44-2 -3 4”
                         while ((text = reader.readLine()) != null)
                          {
                                      //可以将文本内容输出来。
                           } 
                    } catch (FileNotFoundException e)
                     {       
                                  e.printStackTrace();  
                      } catch (IOException e)    
                       {     
                                   e.printStackTrace();     
                        } finally  
                         {          try        
                                    {      
                                                  if (reader != null)    
                                                   {        
                                                               reader.close();  
                                                   }  
                                     } catch (IOException e)      
                                     {     
                                                e.printStackTrace();  
                                       } 
                        String array[] = text.split(" ");  //text就是获得的文本内容,“”里面是一个空格!
                         for(int i = 0; i < array.length; i++)
                       {  
                                     System.out.printf("array[%d] = %s%n", i, strs[i]);  
                       }


希望我没理解错你的意思,哈哈哈。

额。。。。谢谢你的代码,但是这个题目不是以空格作为分隔符的
补充:Java ,  Eclipse
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,