有三题,第一题不用多说,讲下第2,3题
第二题:
因为moodle看不了题目,通俗讲一下,大致就是给一串数字然后检索把0-9每个数字逐一挑出来然后按树状图打印出来
杰哥的想法:
package lab10; import java.util.Scanner; public class Task2 { public static void main(String[] args) { String str="1022473578476949426110832338899437170338449409627474102214022150928"; int [] a=new int [10]; for(int i=0;i<str.length();i++) { int num=str.charAt(i)-'0'; a[num]++; } int max=0; for(int j=0;j<10;j++) { if(a[j]>max) { max=a[j]; } } for(int i=max;i>=1;i--) { for(int j=0;j<10;j++) { if(a[j]>=i) { System.out.print("["+j+"] "); }else { System.out.print(" "+" "+" "); } } System.out.println(); } } }
大致分为三部分
一:
因为其实要检索每一个数字然后按照其位置按树状图打印,换句话说就是判断每个数字有多少个比如0有3个,1有7个这样子(没想到,看题目看的还是不够彻底),这样我们就可以进行检索数字然后在对应的地方上加加,那又要在哪个地方上加呢,并且我们又要打印那就可以想到开创一个长度为10的数组然后按照其对应的数字在其上加。
二:
最后要打印比并且还是从下往上打,那肯定会有一个或多个数字出现最多次,那么就可以通过for循环来获取到max值。
三:
之所以要获取到max值是因为我们就可以判断让他大于一个值的时候就打印,这个值就是max,并且要--操作,小于的话就打印空格。相当于把每一层都遍历一边数组,大于等于这个值就打印否则空格。
第三题
就是给一个文档判断格式是否正确,两个要求,1:前三个是不是t00,t00后是否跟着的就是6个数字,2:空格右边的数字是不是0-100(左边的和右边的会有空格隔开 eg:T00123456 77)
professor的方法
package lab10; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; public class Task3 { public static void main(String[] args) throws NumberFormatException, IOException { FileReader fr=new FileReader("C:/Users/ASUS/Desktop/StudentScore.txt"); BufferedReader br = new BufferedReader(fr); br.readLine(); while(br.ready()) { int a = 0; String str = br.readLine(); String[] arr = str.split("\t"); if (!"T00".equals(arr[0].substring(0, 3)) || arr[0].length() != 9){ System.out.println(str); continue; } if (arr[1].trim().length() == 0){ System.out.println(str); continue; } a=Integer.parseInt(arr[1].trim()); if (a < 0 || a > 100) System.out.println(str); } br.close(); } }
一:
因为题目要求要判断左边的开头是不是T00然后接着的是不是6个数字,右边是不是0-100,那么就可以把他分为两部分,那么就可以通过split(" ")获取数组分为两部分
二:
不懂循环几次那么while循环while(br.ready)判断流是否准备好,返回的是boolean,之后就读行切割,分为两个部分
三:
判断左边是不是T00那就截取前三位后获取长度是不是9,下面重点讲右边部分的判断和一些注意事项
首先有些行结尾不是直接以数字结尾比如是"78 "那么我们读右边部分的时候转为int就会报错并且不能判断,所以此时引用string中的trim方法来进行去除头尾空格,其实要严格的话再用character中的isDigit判断每位是不是数字因为可能是6 6这样
去除空格后因为有些压根就没数字那么判断其数组arr[1]长度是不是等于0之后再判断是不是0-100
每个判断发现不合规范要输出并且cotinue
今天的study就先告一段落,先洗澡了。