zoukankan      html  css  js  c++  java
  • 素数,回文,统计单词

    素数

    设计思想

     按照除k取余的思想,循环进行除法取余数,余数为零表示可以被其他数整出,则不是素数。

    package numbe;
    
    import java.util.Scanner;
    
    public class Prime {
    
        public static void main(String[] args) {
            int i = 0;
            System.out.println("1. 3-100 2. 任意两数 3. 最大十个和最小十个");
            Scanner sc = new Scanner(System.in);
            i = sc.nextInt();
            switch (i) {
            case 1:
                isprime();
                break;
            case 2:
                isprime1();
                break;
            case 3:
                isprime2();
                break;
            }
        }
    
        public static void isprime() {
            int n;
            int i = 2;
            int m = 0;
            for (n = 3; n >= 3 && n <= 100; n++) {
                int j = 0;
                if (n % 2 == 0)
                    j = 1;
                for (i = 2; i <= Math.sqrt(n); i++) {
                    if (n % i == 0)
                        j = 1;
                }
                if (j == 0) {
                    m++;
                    System.out.print(n + "  ");
                    if (m % 5 == 0)
                        System.out.println();
                }
            }
            System.out.println();
        }
    
        public static void isprime1() {
            System.out.println("请输入两个整数:");
            Scanner sc = new Scanner(System.in);
            int num1, num2;
            System.out.println("number1:");
            num1 = sc.nextInt();
            System.out.println("number2:");
            num2 = sc.nextInt();
            int n;
            int i = 2;
            int m = 0;
            for (n = num1; n >= num1 && n <= num2; n++) {
                int j = 0;
                if (n % 2 == 0)
                    j = 1;
                for (i = 2; i <= Math.sqrt(n); i++) {
                    if (n % i == 0)
                        j = 1;
                }
                if (j == 0) {
                    m++;
                    System.out.print(n + "  ");
                    if (m % 5 == 0)
                        System.out.println();
                }
            }
        }
    
        public static void isprime2() {
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入两个整数:");
            int num1, num2;
            System.out.println("number1:");
            num1 = sc.nextInt();
            System.out.println("number2:");
            num2 = sc.nextInt();
            System.out.println("十个最小:");
            int n;
            int i = 2;
            int m = 0;
            int k = 0;
            int a[] = new int[100];
            for (n = num1; n >= num1 && n <= num2; n++) {
                int j = 0;
                if (n % 2 == 0)
                    j = 1;
                for (i = 2; i <= Math.sqrt(n); i++) {
                    if (n % i == 0)
                        j = 1;
                }
                if (j == 0) {
                    m++;
                    a[m] = n;
                    if (m <= 10)
                        System.out.print(a[m] + "  ");
                }
            }
            System.out.println();
            System.out.println("十个最大:");
            for (k = m - 10; k <= m; k++) {
                System.out.print(a[m] + "  ");
            }
    
        }
    }
    素数

    结果截图

    总结

    输出时换行出现异常,通过更改换行位置实现了正常输出。

    使用数组实现了最大十个和最小十个数的输出。

    回文

    设计思想

    从键盘随意输入一个字符串,并将其赋值给一个数组,然后用递归进行,否则从数组的首元素与尾元素进行比较,若相等,则进行i++与j--,不断向中间靠拢,直到达到判断条件i>=j(i=j是输入的字符串的长度为偶数个,i>j是输入的字符串有奇数个),中间若有一次不符合判断,直接跳出递归,结束进程,输出不是回文字符串。(i是指的字符串的第一个元素的下标,j是指的字符串的最后一个元素的下标)

    package 回文;
    
    import java.util.Scanner;
    
    public class Huiwen {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            String s;
            int j;
            int i = 0;
            Scanner input = new Scanner(System.in);
            System.out.println("请输入 一个字符串:");
            s = input.next();
            char a[];
            a = s.toCharArray();
            j = a.length - 1;
            for (int k = 0; k < s.length(); k++) {
                System.out.print(a[k]);
            }
            huiwen(a, j, i);
        }
    
        public static void huiwen(char a[], int j, int i) {
            if (i >= j) {
                if (a[i] == a[j])
    
                    System.out.println("是回文");
                System.exit(0);
            }
            if (a[i] == a[j])
                huiwen(a, --j, ++i);
            else {
                System.out.println("不是回文!");
                System.exit(0);
            }
        }
    }
    回文

    实验截图

    统计单词

    设计思路

    每遇到段落中的空格和标点,便生成一个新的单词,与之前的单词进行比较,并在总数加一

    package 统计单词;
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileReader;
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.Map;
    public class Statistical {
        
        public static void main(String[] args){
            File file = new File("D:/test.txt");
            String text =txtString(file);
            findEnglishNum(text);
            }
        
        public static String txtString(File file){
            StringBuilder result = new StringBuilder();
       try{
           BufferedReader br = new BufferedReader(new FileReader(file));//构造一个BufferedReader类来读取文件
           String s = null;
           while((s = br.readLine())!=null){//使用readLine方法,一次读一行
               result.append(s/*+System.lineSeparator()*/);
           }
           br.close();    
       }catch(Exception e){
           e.printStackTrace();
       }
       return result.toString();
    }
    public static void findEnglishNum(String text){
        //找出所有的单词
        String[] array = {".", " ", "?", "!"};
            for (int i = 0; i < array.length; i++) {
                text = text.replace(array[i],",");
            }
            String[] textArray = text.split(",");
            //遍历 记录
            Map<String, Integer> map = new HashMap<String, Integer>();
            for (int i = 0; i < textArray.length; i++) {
                String key = textArray[i];
                //转为小写
                String key_l = key.toLowerCase();
                if(!"".equals(key_l)){
                    Integer num = map.get(key_l);
                    if(num == null || num == 0){
                        map.put(key_l, 1);
                    }else if(num > 0){
                        map.put(key_l, num+1);
                    }
                }
            }
            //输出到控制台
            System.out.println("各个单词出现的频率为:");
            Iterator<String> iter = map.keySet().iterator();
            while(iter.hasNext()){
                String key = iter.next();
                Integer num = map.get(key);
                System.out.println(key + "	" + num + "次");
            }
        }
    }
    单词

    实验截图

    总结

    没有实现出现最多次数和最少次数的统计

     

  • 相关阅读:
    溢出省略号
    自定义字体
    jquery实现上一页下一页
    集成学习理解
    常用命令-python篇
    python 多进程和多线程
    10预处理命令上
    9函数
    8指针2
    7指针1
  • 原文地址:https://www.cnblogs.com/lixv2018/p/9786215.html
Copyright © 2011-2022 走看看