哈工大软件构造-Lab1-P1的问题

HIT-软件构造-Lab1-P1遇到的一些问题

序言

刚接触软件构造这门课,遇到了不少的问题,于是就写下来这篇篇博客:一者,是经历了在网上找各种问题的解答摧残,好多博客都是看起来很好,但实际操作起来,真的是坑爹;再者博客在期末占5分,为了学分绩,也得写写。这篇文章主要是记录了我遇到的问题以及解决的方法,希望可以让后面的学弟学妹节约点时间

幻方的读入

https://www.cnblogs.com/lfzw20/p/6961543.htm
这是我用到的博客,有用的是下面的代码:

public void fileRead() throws Exception {
        File file = new File("D:\\test.txt");//定义一个file对象,用来初始化FileReader
        FileReader reader = new FileReader(file);//定义一个fileReader对象,用来初始化BufferedReader
        BufferedReader bReader = new BufferedReader(reader);//new一个BufferedReader对象,将文件内容读取到缓存
        StringBuilder sb = new StringBuilder();//定义一个字符串缓存,将字符串存放缓存中
        String s = "";
        while ((s =bReader.readLine()) != null) {//逐行读取文件内容,不读取换行符和末尾的空格
            sb.append(s + "\n");//将读取的字符串添加换行符后累加存放在缓存中
            System.out.println(s);
        }
        bReader.close();
        String str = sb.toString();
        System.out.println(str );
    }<br>遇到问题:<br>while循环中,直接使用(bReader.readLine()!=null),循环体内用s=bReader.readLine()赋值,<br>输出发现跳行获取的,每调用一次bReader.readLine()就会读取一行,所以造成跳行显示。

以上代码除去输出的部分,我们最终可以得到一个String类型的str,来点更直接的,更针对我们这道实验题的:

        File file = new File(fileName);
		if (! file.exists()) {
			System.out.println("File doesn't exist!");
			return false;
		}
		FileReader reader = new FileReader(file);
		BufferedReader bReader = new BufferedReader(reader);
		StringBuilder sb = new StringBuilder();
		String s;
		while ((s =bReader.readLine()) != null) {
            sb.append(s + "\n");
        }
		bReader.close();
        String str = sb.toString();

其中fileName是以String类型输入的文件的路径(后面我会提到相对路径的问题),之后对str进行任何操作就回到了我们熟悉的领域,在此就不再论述了。

二维List的建立

Java比C语言有一个特别方便的地方就是List,他让你不用再去预估数组的大小(以前写C的时候,经常为了数组不崩掉,建一个超大的int[][]或char[][],心疼电脑空间啊)。现在有了List,直接声明:

 ArrayList<Integer> array = new ArrayList<Integer>();

问题在于,二维的怎么建立,按照C的逻辑,我很机智的写了如下代码:

 ArrayList<Integer><Integer> array = new ArrayList<Integer><Integer>();

死得老惨了,正确的写法是:

 ArrayList<ArrayList<Integer>> array = new ArrayList<ArrayList<Integer>>();

之后对List的

array.add();
array.cotains();
array.remove();
array.get();

这都是最基本的了,就不再赘述了。
注意:ArrayList<ArrayList>.get(i)得到的是ArrayList,之后再get一遍:ArrayList<ArrayList>.get(i).get(i)这才是Integer。将Integer换成String同样好使。

将文件导入工程并看起来有层次感

从老师给的网址下载下来要求的东西之后,最简单的想法就是用鼠标,粘贴复制、新建文件夹,但是你会发现你的eclipse右边的目录毫无反应,这时你需要
(有谁会带着鼠标的截屏,用手机拍得好丑)
更新目录更新一下目录即可
之后你发现,加入的文件是这样的:
在这里插入图片描述
是不是很难看,于是经过千辛万苦,找到这张图
在这里插入图片描述选择Hierarchical就完美了(千万别去改build path!!!)

Build Path的问题

如果你不幸地改了build path,不要慌,这两张图会帮到你:
在这里插入图片描述在这里插入图片描述

以上就是我遇到的主要问题,至于怎么判断是不是幻方这种算法问题,还是需要同学们靠自己完成的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值