对于非法输入的处理

这周的《软件测试技术》,我们又再次提起了“闰年问题”,至于如何判断闰年详见http://www.cnblogs.com/xlwm/p/4337150.html,在这里我们重点探讨下关于非法输入的问题。众所周知,在功能完备的软件里,应该全面地考虑到用户输入问题。而如果没有考虑,用户的非法输入可能会导致软件崩溃,甚至产生不可预料的后果。常见的处理方法,就是针对程序产生的exception进行try-catch,下面我们针对闰年问题来详细介绍:

一、问题描述:                                                        

通过输入年份,判断是否为闰年。

二、实现功能:                                                        

在文本框中输入年份,而后在窗口中点击“确定”按钮,弹出另一个窗口显示判断结果。

三、代码实现:                                                        

这里是主要代码,我们从中可以看出int.parse函数是实现从string到int的转换,该函数可能会抛出异常,因为我们对此异常try-catch,在catch语句里进行非法输入的处理

 1 using System;
 2 using System.Collections.Generic;
 3 using System.ComponentModel;
 4 using System.Data;
 5 using System.Drawing;
 6 using System.Linq;
 7 using System.Text;
 8 using System.Threading.Tasks;
 9 using System.Windows.Forms;
10
11 namespace LeapYearTest
12 {
13     public partial class Form1 : Form
14     {
15         public Form1()
16         {
17             InitializeComponent();
18         }
19
20         private void textBox1_TextChanged(object sender, EventArgs e)
21         {
22
23         }
24
25         private void button1_Click(object sender, EventArgs e)
26         {
27             Form2 form2 = new Form2();
28            try{
29             int year = int.Parse(textBox1.Text);
30             if (isLeapYear(year))
31                 form2.label1.Text = year+"年是闰年";
32             else
33                 form2.label1.Text = year+"年不是闰年";
34            }catch(Exception ex)
35            {
36                form2.label1.Text = "请输入合法年份";
37            }
38             form2.Show();
39             this.Hide();
40
41         }
42
43         private void Form1_Load(object sender, EventArgs e)
44         {
45
46         }
47
48         private void label1_Click(object sender, EventArgs e)
49         {
50
51         }
52
53         public static bool isLeapYear(int year)
54         {
55             if (year % 400 == 0)
56                 return true;
57             if (year % 100 == 0)
58                 return false;
59             if (year % 4 == 0)
60                 return true;
61             return false;
62
63         }
64     }
65 }

四、测试用例:                                                        

被 400 整除的年份

被 100 整除, 但是不被400 整除的年份

被 4 整除, 但是不被100 整除的年份
偶数, 不被4 整除的年份

奇数年份

其它非法输入的年份

五、测试结果:                                                       

(1)

                     

(2)

                   

(3)

                                 

(4)

                                 

(5)

                               

(6)

                           

(7)

                                  

六、可改进的地方:

该程序乍看之下,已经处理了用户异常输入的问题,但是只要用户输入整数,比如0,-1,对于闰年的判断这也是有效的。事实上,目前世界通行的公历中,有持续时间为0的10天,即公元1582年10月5日至14日,而也正是从那时开始才慢慢有了”闰年“一说,因此这也可以作为判断闰年的一个限制条件。

时间: 2024-08-13 09:19:08

对于非法输入的处理的相关文章

闰年测试(非法输入的判断)

1. 问题描述: 输入一个年份,判断其是否为闰年,若为非法输入则给出提示 2. 问题分析: 闰年的判断: 1)输入一个年份,若它能被400整除,则它是闰年:若它能被4整除,且它不能被100整除,则它是闰年 由此判断,若它是闰年,则输出“该年是闰年”:否则,则输出“该年不是闰年” 2)若为非法输入,给出提示,则输出“输入不合法” 3. 测试用例: 编号 输入 期望输出 1 2004 该年是闰年 2    2000 该年是闰年 3 1900 该年不是闰年 4 200,. 输入不合法 4. 测试结果:

【软件测试】闰年问题(不考虑非法输入)

问题描述 输入年份,输出输入年份是否为闰年(不考虑非法输入) 一个年份是闰年的条件是: 该年份能被4整除但是不能被100整除或 该年份能被400整除 代码实现 import javax.swing.JOptionPane; import javafx.application.Application; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.geometry.Pos; impo

【软件测试】考虑闰年问题中的非法输入

问题提出 在上一篇中提到了闰年问题的实现以及测试,但是在上篇中并没有提及输入框中如果输入非法输入会发生什么问题 观察如下,当我们在输入框中输入"ab"时: 会出现下面java.lang.NumberFormatException: java.lang.NumberFormatException: For input string: "ab" at java.lang.NumberFormatException.forInputString(Unknown Sourc

[软件测试学习]考虑到测试的代码编写/int.parse的非法输入—由一个简单的c#闰年检测程序说起

一个简单的C#的闰年检测程序 1.闰年检测的函数编写 当提起检测平年闰年时候,第一反应写出的代码 1 public static bool isLeapYear(int year){ 2 return ((year % 4 == 0 && year % 100 != 0)||(year % 400 == 0)) 3 } 但是这个并不易于测试和出现错后的修改,更改代码如下 1 public static bool isLeapYear(int year){ 2 bool check = ne

关于闰年测试中非法输入的处理

在软件测试技术课当中我们进行了关于闰年的测试,闰年的测试方法如下所示: public static boolean isLeapYear(int year)        {             if (year % 400 == 0)                return true;             if (year % 100 == 0)                return false;             if (year % 4 == 0)         

闰年的非法输入的问题

1.问题描述 输入年份,判断其是否为闰年. 2.判断条件 1)能被4整除且不能被100整除的为闰年. 2)能被100整除且被400整除的为闰年. 3.等价类划分 编号 有效等价类 编号 无效等价类 1 能被400整除 3 能被100整除不能被4整除   2 能被4整除不能被100整除 4 不能被4整除 5 非法输入(包括负数) 4.测试用例 编号 输入 覆盖等价类 输出 1 1600 1 1600是闰年 2 2012 2 2012是闰年 3 1700 3 1700非闰年 4 2014 4 201

软件测试第四周--闰年问题的非法输入处理

闰年的判断条件: ①.普通年能被4整除且不能被100整除的为闰年.②.世纪年能被400整除的是闰年③.对于数值很大的年份,这年如果能整除3200,并且能整除172800则是闰年.如172800年是闰年,86400年不是闰年 测试用例: 编号 输入 输出 1 2004 此年是闰年 2 2008 此年是闰年 3 2000 此年是闰年 4 1999 此年非闰年 5 1998 此年非闰年 6 -1200 非法输入 基本逻辑:#include<stdio.h>void main(){ int year,

JAVA闰年测试与解决非法输入

问题实现 实现一个闰年测试的JAVA代码如下: package leapyear; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextFi

Linux下批量把GDK编码的文章转化为UTF-8编码的文章以及“iconv: 未知 xxx 处的非法输入序列”错误处理

Linux下批量转换GBK文件到UTF-8编码方法 查看文件编码 file -i filename 1.递归转换(包括子文件夹) find default -type d -exec mkdir -p utf/{} \; find default -type f -exec iconv -f GBK -t UTF-8 {} -o utf/{} \; 这两行命令将default目录下的文件由GBK编码转换为UTF-8编码,目录结构不变,转码后的文件保存在utf/default目录下. 2.转换 命