Java实验7《字符串和文本I/O 》

Java 专栏收录该内容
11 篇文章 0 订阅

一、实验目的

  1. String类中处理字符串方法的使用
  2. 从命令行传递参数给main方法的编程及运行
  3. 文件类及文件输入输出

二、实验内容

  1. 【检测密码】一些网站设定了一些指定密码的规则。编写一个方法,检测一个字符串是否是合法的密码。假定密码规则如下:
  • 密码必须至少有8个字符。
  • 密码只能包括数字和字母。
  • 密码必须至少有2个数字。
      编写一个程序,提示用户输入密码,如果该密码符合规则就显示“Valid Password”,否则显示“Invalid Password”。

1.1 程序代码:

import java.util.*;
public class program1{
     public static void main(String[] args){
     //输入密码
     Scanner input = new Scanner(System.in);
     System.out.println("密码要求如下:"
                        + "\n1.密码必须至少有8个字符。"
                        + "\n2.密码只能包括数字和字母。"
                        + "\n3.密码必须至少有2个数字。"
                        + "\n请输入一个密码:");
     String password = input.nextLine();
     //检测密码的合法性
     if(CheckPassword(password))
         System.out.println("Valid Password");
     else
         System.out.println("Invalid Password");
     }//main函数结束

    //检测密码合法性方法
    public static boolean CheckPassword(String password){
        int countNumber = 0;
        //对每个字符进行对应处理
        for(int i=0; i<password.length(); i++){
           //判断是否为字母
           if(Character.isLetter(password.charAt(i)) )
                continue;
           //判断是否为数字
           else if(Character.isDigit(password.charAt(i)) )
                countNumber++;
           else
                return false;
        }
       if(countNumber>=2 && password.length()>=8)
           return true;
       else
          return false;
   }//方法CheckPassword结束 
}//class结束

1.2 运行结果:
Alt Alt
  运行结果正确,符合要求,输入四次密码,前三次各有一个条件不满足,所以均是不合格,最后一个密码则符合三个要求。

1.3 心得体会:
  这道密码验证是否合格题目主要是字符串基本方法isLetter(a)、isDigit(b)、charAt( i )等方法的运用。了解并熟悉运用字符串的相关基本方法即可。


  1. 【统计一个字符中的字符数、单词数和行数】编写程序统计一个文件中的字符数(控制字符\r和\n除外)、单词数以及行数。单词由空格、Tab、回车或换行符分隔。文件名作为命令行参数传递。如下图所示:
    Alt

1.1 程序代码:

import java.io.*;
import java.util.*;

public class program2{
    public static void main(String[] args) throws Exception{
       //文件不存在则退出
       if(args.length!= 1){
            System.out.println("File " + args[0] + " does not exists");
            System.exit(1);
       }

       //文件存在
       File file = new File(args[0]);
       int numberOfCh = 0;
       int numberOfWords = 0;
       int numberOfLines = 0;

       try(
             Scanner input = new Scanner(file);
       ){
         while(input.hasNext()){
             //读取test中的一行
             String ch = input.nextLine();
             //将每一行中以空格分割成单词
             String[] words = ch.split(" ");
             //统计单词数
             numberOfWords += words.length;
             //统计字符数
             numberOfCh += ch.length();
             //统计行数
             numberOfLines++;
         }//while结束
       //输出文件中的字符数、单词数、行数
       System.out.println("File " + args[0] +" has\n" + numberOfCh 
+ " characters\n" + numberOfWords + " words\n" + numberOfLines + " lines");
       }
    }//main结束
}//class结束

1.2 运行结果:
Alt Alt
  运行正确,符合题目要求,能够正确输出test文件中的字符数、单词数、行数

1.3 心得体会:
  本程序需要掌握文本读取、字符串的基本处理。将整个文本先分成行,统计每行的字符数和单词数再相加即可。


  1. 【读写数据】编写一个程序,如果名为Exercise9_19.txt的文件不存在,则创建该文件。使用文本I/O编写随机产生10个整数给文件。文件中的整数由空格分开。从文件中读回这些数据,然后显示排好序的数据。

3.1 程序代码:

import java.io.*;
import java.util.*;

public class program3{
   public static void main(String[] args) throws Exception{
        File file = new File("Exercise9_19.txt");
        if(file.exists()){
           System.out.println("File Exercise9_19.txt already exists");  
        }

        //产生10个随机整数给文件
        PrintWriter output = new PrintWriter(file);
        for(int i=0; i<10; i++){
            if(i==9)
                 output.print( (int)(Math.random()*100) );
            else
                 output.print( (int)(Math.random()*100) + " ");
        }   
        output.close();
     
        //从文件读取数据并赋给数组
        Scanner input = new Scanner(file);
        ArrayList<Integer> a = new ArrayList<>();
        while(input.hasNext()){
             int number = input.nextInt();
             a.add(number);
        }
        input.close();

        //对数组进行排序并输出
        Collections.sort(a);
        for(int e: a)
             System.out.print(e + " ");
        System.out.println();
   }//main结束
}//class结束

3.2 运行结果:
[外链图片转存失败(img-6zme4Oi0-1564040362910)()] 在这里插入图片描述
在这里插入图片描述 在这里插入图片描述
  运行结果正确,若Exercise9_19.txt不存在,创建该文件并用文本I/O赋予10个随机整数,再用文本I/O读取这些整数并排序后输出,若Exercise9_19.txt存在,则直接用文本I/O赋予10个整数,再用文本I/O读取这些整数并排序后输出。

3.3 心得体会:
  文本I/O操作要注意文件参数传递,检查文件是否存在及打开文件后记得关闭。后续读取数据存放在数组中,调用ArrayList中sort方法即可进行迅速排序,再使用foreach循环或者for、while等循环输出排序后的数组即可。


  • 2
    点赞
  • 1
    评论
  • 7
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值