根据我多年的编程经验(好吧,只有一年),这个问题我分成三部分来做吧。第一部分是文件的读写。第二部分是读取单词并判断,第三点是计数器。那么今天我的主要成就是,文件的读取。嗯没有错,我只做了这一项。但是我算是攻克了一个蛮大的问题。我之前就在atm的问题上卡住了读取,这一次又是读取。还是以读取为主。不过这一次,我成功的完成了这一部分。好吧,多说无益,上代码
1 package com.campu; 2 3 import java.io.BufferedInputStream; 4 import java.io.BufferedReader; 5 import java.io.File; 6 import java.io.FileInputStream; 7 import java.io.InputStreamReader; 8 import java.io.Reader; 9 10 11 public class H20121012 { 12 13 public static void readTxtFile(String filePath){ 14 try { 15 String encoding="GBK"; 16 File file=new File(filePath); 17 if(file.isFile() && file.exists()){ //判断文件是否存在 18 InputStreamReader read = new InputStreamReader( 19 new FileInputStream(file),encoding);//考虑到编码格式 20 BufferedReader bufferedReader = new BufferedReader(read); 21 String lineTxt = null; 22 while((lineTxt = bufferedReader.readLine()) != null){ 23 System.out.println(lineTxt); 24 } 25 read.close(); 26 }else{ 27 System.out.println("找不到指定的文件"); 28 } 29 } catch (Exception e) { 30 System.out.println("读取文件内容出错"); 31 e.printStackTrace(); 32 } 33 34 } 35 36 public static void main(String argv[]){ 37 String filePath = "F:\\新建文本文档.txt"; 38 // "res/"; 39 readTxtFile(filePath); 40 } 41 42 }
1 package com.campu; 2 import java.util.HashMap; 3 import java.util.Iterator; 4 5 public class Has { 6 // 统计单词出现的次数 7 public static String StatList(String str) { 8 StringBuffer sb = new StringBuffer(); 9 HashMap<String ,Integer> has = new HashMap<String ,Integer> (); // 打开一个哈希表 10 String[] slist = str.split(" "); 11 for (int i = 0; i < slist.length; i++) { 12 if (!has.containsKey(slist[i])) { // 若尚无此单词 13 has.put(slist[i], 1); 14 } else {//如果有,就在将次数加1 15 Integer nCounts = has.get(slist[i]); 16 has.put(slist[i],nCounts+1 ); 17 } 18 } 19 //遍历map 20 Iterator iterator = has.keySet().iterator(); 21 while(iterator.hasNext()){ 22 String word = (String) iterator.next(); 23 sb.append("单词:").append(word).append(" 次数").append(has.get(word)).append(" "); 24 } 25 return sb.toString(); 26 } 27 28 public static void main(String[] args) { 29 30 String s=null; 31 H20121012.readTxtFile(s); 32 33 System.out.println(StatList(s)); 34 } 35 }
Copy了一些,可是我真的没办法。就像是刚从新手村毕业的菜鸟,拎着初级装备去打满级boss,所有技能都扔出去了还是被人家吊着锤。不借助外援还玩个毛线。拼接代码很辛苦,改代码更辛苦。网上的代码基本上都用不了,人家的包都是现成的。我这边只能一点点的借用,还得不停地改....辛苦的亚匹还没啥效果....改成这样,虽然很难看,但是到底是能运行了,我也就不去吹毛求疵了....
整个实验的思想
化繁为简
实验分两段,读取和搜索
读取方面无法再细分了,也没必要细分了
搜索方面分两部分
计算与存取
计算可以用循环
存取可以用数组
最后把各部分拼在一起就完事了
1 package 素数输出; 2 import java.util.Scanner; 3 public class shuchu { 4 public static void main(String[] args) { 5 Scanner sc = new Scanner(System.in); 6 System.out.println("请输入一个正整数"); 7 int num1 = sc.nextInt(); 8 Scanner kb = new Scanner(System.in); 9 System.out.println("请输入一个正整数"); 10 int num2 = kb.nextInt(); 11 boolean numb = true; 12 int PrimeCount=0; 13 for (int i =num1 ; i <=num2; i+=2) { 14 int k = (int) Math.sqrt(i); 15 numb= true; 16 for (int j = 2; j <= k; j++) { 17 if (i % j == 0) { 18 numb = false; 19 break; 20 } 21 } 22 if (numb) { 23 PrimeCount++; 24 System.out.print(i+" "); 25 if(PrimeCount%5==0){ 26 System.out.println(); 27 } 28 } 29 } 30 } 31 }
- 首先用import java.util.Scanner;
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个正整数");
int num1 = sc.nextInt();
来输入两个整数,来控制素数的取舍范围
2.
for (int i =num1 ; i <=num2; i+=2) {
int k = (int) Math.sqrt(i);
numb= true;
for (int j = 2; j <= k; j++) {
if (i % j == 0) {
numb = false;
break;
}
}
素数判断,和c一样,很简单
3.空行
if (numb) {
PrimeCount++;
System.out.print(i+" ");
if(PrimeCount%5==0){
System.out.println();
%5控制行的个数
System.out.println();是空行语句println转行,print不转行
实验心得:
语句和c有相似,也有不同。
语句的控制相较于c,更精准
感觉没什么困难
import java.util.Scanner;
public class HuiWenTest {
private static Scanner sc;
/**
* @SERLIN
*/
public static void main(String[] args) {
String str = "";
System.out.println("请输入一个字符串");
sc = new Scanner(System.in);
str = sc.next();
StringBuffer sb = new StringBuffer(str);
sb.reverse();//
int count = 0;
for (int i = 0; i < str.length(); i++) {
if (str.charAt(i) == sb.charAt(i)) {
count++;
}
}
if (count == str.length()) {
System.out.println("此字符串是一个回文字符串");
} else {
System.out.println("此字符串不是一个回文字符串");
}
}
}
实验总结::
这里采用的是一个倒置式匹配方式
for (int i = 0; i < str.length(); i++) {
if (str.charAt(i) == sb.charAt(i)) {
count++;
}
}
if (count == str.length()) {
这里的循环是一个重点
System.out.println("请输入一个字符串");
sc = new Scanner(System.in);
str = sc.next();
这里的提示语和输入也很重要