欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java语言程序设计 第十二章 (12.11、12.12、12.13、12.14)

程序员文章站 2022-05-29 14:45:56
...

程序小白,希望和大家多交流,共同学习
java语言程序设计 第十二章 (12.11、12.12、12.13、12.14)

import java.util.Scanner;
import java.io.File;
import java.io.PrintWriter;

public class DeleteString
{
    public static void main(String [] args) throws Exception
    {
        if (args.length != 2)
        {
            System.out.println("Useage: delete string + filename");
            System.exit(1);
        }

        File file = new File(args[1]);
        if (!file.exists())
        {
            System.out.println(args[1] + " is not exists");
            System.exit(2);
        }

        try(
            Scanner input = new Scanner(file);
            PrintWriter output = new PrintWriter("newResource.txt");
            ){
                while (input.hasNext())
                {
                    StringBuilder str = new StringBuilder(input.nextLine());
                    // String 字符串一旦创建就是不可改变的,而且没有delete方法
                    // 即使使用 replace 方法,替换掉匹配的字符串,但是无法多次替换
                    // 也就是说在不改变原有字符串的情况下,只能替换一次
                    int startIndex = str.indexOf(args[0]);
                    while (startIndex != -1)
                    {
                        int endIndex = startIndex + args[0].length() + 1;
                        str.delete(startIndex, endIndex);
                        startIndex = str.indexOf(args[0], endIndex);
                    }
                    output.println(str);
                }
            }
    }
}

java语言程序设计 第十二章 (12.11、12.12、12.13、12.14)

import java.util.Scanner;
import java.io.File;
import java.io.PrintWriter;
import java.util.ArrayList;

public class Reformatting{
    public static void main(String [] args) throws Exception{
        if (args.length != 1){
            System.out.println("Enter a sourcet file");
            System.exit(1);
        }

        File file = new File(args[0]);
        if (!file.exists()){
            System.out.println("File : " + args[0] + " is not exist");
            System.exit(2);
        }

        try(
            PrintWriter output = new PrintWriter("targetFile.txt");
            Scanner input = new Scanner(file);
            ){
                // 使用ArrayList<String> 将原有的文件拷贝
                // 然后,将里面的 { 单行去除,并在前一行加上{ 
                // 利用了ArrayList 的大小可变的有点
                ArrayList<String> recode = new ArrayList<>();
                while (input.hasNextLine()){
                    recode.add(new String(input.nextLine()));
                }
                for (int i = 0; i < recode.size() - 1; i++){
                    if (recode.get(i + 1).contains("{")){
                        String newLine = recode.get(i) + "{";
                        recode.set(i, newLine);
                        // set 可以在指定位置设置元素,若已有则进行替换
                        recode.remove(i + 1);
                    }
                }

                for (int i = 0; i < recode.size(); i++){
                    System.out.println(recode.get(i));
                }
            }
    }
}
// 此时的文件就是已经转换过的

java语言程序设计 第十二章 (12.11、12.12、12.13、12.14)
java语言程序设计 第十二章 (12.11、12.12、12.13、12.14)
java语言程序设计 第十二章 (12.11、12.12、12.13、12.14)
12.13 方法一

import java.util.Scanner;
import java.io.File;

public class Statistics
{
    public static void main(String [] args) throws Exception
    {
        if (args.length != 1)
        {
            System.out.println("Useage: file name");
        }

        int countWords = 0;
        int countLetter = 0;
        int countLine = 0;
        Scanner input = new Scanner(new File(args[0]));
        while (input.hasNextLine())
        {
            String strLine = input.nextLine();
            String[] newStrLine = strLine.split(" ");
            // 使用的是 String 中的 split 先按照空格划分,在连续的空格处
            // 会出现空格为单独一行的状况
            // 所以要判断每一行是否为一个单词
            for (int i = 0; i < newStrLine.length; i++)
            {
                if (Character.isLetter(newStrLine[i].charAt(0)))
                {
                    countWords++;
                    countLetter += newStrLine[i].length();
                }
            }
            countLine++;
        }
        System.out.println("File " + args[0]);
        System.out.println(countLetter + " character");
        System.out.println(countWords + " words");
        System.out.println(countLine + " lines");

        input.close();
    }
}

12.13 方法二

import java.util.Scanner;
import java.io.File;

public class Statistics2
{
    public static void main(String [] args) throws Exception
    {
        if (args.length != 1)
        {
            System.out.println("Useage: file name");
        }

        int countWords = 0;
        int countLetters = 0;
        int countLines = 0;
        Scanner input = new Scanner(new File(args[0]));
        while (input.hasNextLine())
        {
            String strLine = input.nextLine();
            // 使用 Charactetr 中的判断每一行的每个元素是否是字符
            for (int i = 0; i < strLine.length(); i++)
            {
                if (Character.isLetter(strLine.charAt(i)))
                {
                    countLetters++;
                }
            }

            // 依照每个单词以空格结束来计算单词数
            // 因为空格不一定是一个,所以要判断前一个是否是字符
            // 最后的一个单词最后可能没有空格就是,而是直接结束
            // 所以在最后还要判断每一行的结尾是否是字符
            for (int i = 0; i < strLine.length() - 1; i++)
            {
                if (Character.isLetter(strLine.charAt(i)) && strLine.charAt(i + 1) == ' ')
                {
                    countWords++;
                }
            }

            if (Character.isLetter(strLine.charAt(strLine.length() - 1)))
            {
                countWords++;
            }
            countLines++;
        }
        System.out.println("File " + args[0]);
        System.out.println(countLetters + " character");
        System.out.println(countWords + " words");
        System.out.println(countLines + " lines");

        input.close();
    }
}

java语言程序设计 第十二章 (12.11、12.12、12.13、12.14)
12.14

import java.util.Scanner;
import java.io.File;

public class TheScoreInFile
{
    public static void main(String [] args) throws Exception
    {
        Scanner input = new Scanner(System.in);
        System.out.print("Enter the name of a file: ");
        String fileName = input.nextLine();

        File file = new File(fileName);
        if (!file.exists())
        {
            System.out.println(fileName + " is not exists");
            System.exit(1);
        }

        double totalScore = 0.0;
        int count = 0;
        Scanner in = new Scanner(file);
        System.out.println("loading...");
        while (in.hasNextInt())
        {
            System.out.println("loading...");
            totalScore += in.nextDouble();
            in.skip(" ");
            // API 中 Scanner 的一个方法
            // 跳过与从指定字符串构造的模式匹配的输入信息。 
            // 注意在文档的最后一个数字之后也要有空格
            count++;        
        }

        input.close();
        in.close();
        System.out.println("Total scores is " + totalScore);
        System.out.println("Average is " + (totalScore / count));
    }
}

上一篇: 4.2

下一篇: Java面试集锦(一)