前言
这是我从网上看到的例题,拿来写了写,有些部分写的很草率,不是太好,这次的目的是练习常用的API,但是有些我没有用。
目录
题目1
- 现已知工人(Worker)类,属性包含姓名(name)、工龄(year),请编写该类,提供构造方法和get、set方法。在测试类中,请查看键盘录入Scanner类的API,创建工人类对象,属性值由键盘录入,打印对象的属性值。输出效果如下:
请录入工人姓名:
张三
请录入工人工龄:
5
该工人对象的属性信息如下:
姓名:张三
工龄:5
代码如下:
public class Worker {
private String name;
private int year;
public Worker() {
}
public Worker(String name, int year) {
this.name = name;
this.year = year;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getYear() {
return year;
}
public void setYear(int year) {
this.year = year;
}
public void show(){
System.out.println("该工人对象的属性信息如下:");
System.out.println("姓名:"+getName());
System.out.println("工龄:"+getYear());
}
}
public static void main(String[] args) {
Worker worker = new Worker();
Scanner scanner = new Scanner(System.in);
System.out.println("请输入工人的姓名:");
worker.setName(scanner.nextLine());
System.out.println("请输入工人的工龄:");
worker.setYear(scanner.nextInt());
worker.show();
}
题目2
- 在登录注册页面中,除了用户名和密码外,通常也会包含验证码。验证码是用来区分用户是计算机还是人,防止恶意破解密码、刷票、灌水等行为。请查看Random、StringBuilder相关API,定义方法,获取一个包含4个字符的验证码,每一位字符是随机选择的字母和数字,可包含a-z,A-Z,0-9。例如:
7Kt5
代码如下:
public class Test02 {
public static void main(String[] args) {
System.out.println(getCheckCode());
}
public Test02(){
}
public static String getCheckCode(){
Random random = new Random();
String randomcode = "";
StringBuffer stringBuffer = new StringBuffer();
for(char i = 'a';i < 'z';i++){
stringBuffer.append(i);
}
for(char i = 'A';i < 'Z';i++){
stringBuffer.append(i);
}
for(char i= '0';i <='9';i++){
stringBuffer.append(i);
}
for(int i =0; i < 4;i++){
randomcode += stringBuffer.charAt(random.nextInt(stringBuffer.length()));
}
return randomcode;
}
}
题目3
- 在登录注册页面中,除了用户名和密码外,通常也会包含验证码。验证码是用来区分用户是计算机还是人,防止恶意破解密码、刷票、灌水等行为。在判断验证码时一般不区分大小写。请编写程序模拟验证码的判断过程,如果输入正确,给出提示,结束程序。如果输入错误,给出提示,验证码刷新,重新输入,直至正确为止。
生成4位随机验证码的功能在之前的题目中已经完成,可以直接使用。《定义方法,获取一个包含4个字符的验证码,每一位字符是随机选择的字母和数字,可包含a-z,A-Z,0-9。》
运行效果:
生成的验证码为:BkhD
请输入验证码
abcd
输入错误,请重新输入...
生成的验证码为:n1wX
请输入验证码
aaaa
输入错误,请重新输入...
生成的验证码为:Fm1a
请输入验证码
fm1a
输入正确
代码如下:
public class Test03 {
public static void main(String[] args) {
while(true){
String checkCode = getCheckCode();
Scanner scanner = new Scanner(System.in);
System.out.println("此次的验证码为: "+checkCode);
System.out.println("请输入验证码: ");
String checkcodeofuserinput = scanner.nextLine();
int flag = 0;
for(int i =0;i < 4;i++){
for(char j = 'a';j < 'z';j++){
if(checkCode.charAt(i) == j){
flag ++;
break;
}
}
for(char j = 'A'; j < 'Z';j++){
if(checkCode.charAt(i) == j){
flag ++;
break;
}
}
for(char j = '0'; j < '9';j++){
if(checkCode.charAt(i) == j){
flag ++;
break;
}
}
}
if(flag == 4){
System.out.println("输入正确");
System.out.println("生成的验证码为:"+checkCode);
break;
}else{
System.out.println("输入错误,请重新输入...");
}
}
}
public static String getCheckCode(){
Random random = new Random();
String randomcode = "";
StringBuffer stringBuffer = new StringBuffer();
for(char i = 'a';i < 'z';i++){
stringBuffer.append(i);
}
for(char i = 'A';i < 'Z';i++){
stringBuffer.append(i);
}
for(char i= '0';i <='9';i++){
stringBuffer.append(i);
}
for(int i =0; i < 4;i++){
randomcode += stringBuffer.charAt(random.nextInt(stringBuffer.length()));
}
return randomcode;
}
}
题目4
- 请编写程序,由键盘录入一个字符串,统计字符串中英文字母和数字分别有多少个。比如:Hello12345World中字母:10个,数字:5个。
代码如下:
public class Test04 {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
String string = sc.nextLine();
int string_count = 0;
int number_count = 0;
char c =' ';
for(int i = 0; i < string.length();i++){
c = string.charAt(i);
for(char j = 'a';j <'z';j++){
if( c == j){
string_count ++;
break;
}
}
for(char j = 'A';j < 'Z';j++){
if(c == j) {
string_count++;
break;
}
}
for(int j = '0';j <='9';j++){
if( c == j){
number_count++;
break;
}
}
}
System.out.println("字母:"+string_count+" 数字: "+number_count);
}
}
题目5
- 请定义一个方法用于判断一个字符串是否是对称的字符串,并在主方法中测试方法。例如:“abcba”、"上海自来水来自海上"均为对称字符串。
代码如下:
public class Test05 {
public static void main(String[] args) {
System.out.println(isDuiCheng(new Scanner(System.in).nextLine()));
}
public static boolean isDuiCheng(String string){
if(string == null) return false;
int left = 0;
int right = string.length() - 1;
if((string.length() & 1) == 1){
int mid = (string.length() / 2);
for(int i = 0;i < mid; i++){
if(string.charAt(i) != string.charAt(right)){
return false;
}
right --;
}
//遍历完成,就是对称的了
return true;
}
//默认返回的是不对称的
return false;
}
}
题目6
- 我国的居民身份证号码,由由十七位数字本体码和一位数字校验码组成。请定义方法判断用户输入的身份证号码是否合法,并在主方法中调用方法测试结果。规则为:号码为18位,不能以数字0开头,前17位只可以是数字,最后一位可以是数字或者大写字母X。
代码如下:
public class Test07 {
public static void main(String[] args) {
System.out.println(isId(new Scanner(System.in).nextLine()));
}
public static boolean isId(String string){
if(string == null) return false;
int length = string.length();
if(length == 18){
//不是0开头
if(!string.startsWith("0")){
char c = string.charAt(string.charAt(length -1));
if((c >= '0' && c <='9') || c =='X'){
//其实只有判断16个而已
for(int i = 1;i< 17;i++){
if(!(string.charAt(i) >='0' && string.charAt(i) <= '9')){
return false;
}
}
}
}
}else{
System.out.println("不是18位身份证");
}
return false;
}
}
这道题,我并没有测试出来,我输入18位的时候,就报错了,好像不能输入这么多
题目7
- 定义一个方法,把 int 数组中的数据按照指定的格式拼接成一个字符串返回,调用该方法,并在控制台输出结果。
要求:
1、如果传递的参数为空,返回null
2、如果传递的数组元素个数为0,返回[]
3、如果数组为int[] arr = {1,2,3}; ,执行方法后的输出结果为:[1, 2, 3]
代码如下:
public class Test08 {
public static void main(String[] args) {
int[] arr = new int[]{1,2,3};
System.out.println(show(arr));
}
public static String show(int[] string){
StringBuffer stringBuffer = new StringBuffer();
if(string == null) {
return null;
}
if(string.length == 0) {
return stringBuffer.append('[').append(']').toString();
}
stringBuffer.append('[');
for(int i =0;i< string.length;i++){
//最后一次,不用添加逗号
if(i == string.length -1){
stringBuffer.append(string[i]);
break;
}
stringBuffer.append(string[i]).append(',');
}
stringBuffer.append(']');
return stringBuffer.toString();
}
}
题目8
- 现有如下文本:“Java语言是面向对象的,Java语言是健壮的,Java语言是安全的,Java是高性能的,Java语言是跨平台的”。请编写程序,统计该文本中"Java"一词出现的次数。
// 查找参数字符串str在调用方法的字符串中第一次出现的索引,如果不存在,返回-1
public int indexOf(String str)
// 截取字符串,从索引beginIndex(包含)开始到字符串的结尾
public String substring(int beginIndex)
代码如下:
public class Test09 {
public static void main(String[] args) {
String string = "Java语言是面向对象的,Java语言是健壮的,Java语言是安全的,Java是高性能的,Java语言是跨平台的";
String target = "Java";
System.out.println(getJavaAcount(string,target));
}
public static int getJavaAcount(String string,String target){
int account = 0;
int index = -1;
while((index = string.indexOf(target)) != -1){
account++;
//重点,如果不加上目标字符的长度的话,最终结果会显示一直都是0
string = string.substring(index + target.length());
}
return account;
}
}