某劳的笔试题
1.有四个数字 1,2,3,4,求能组成多少个不同的三位数,并是多少?
三个for循环就能搞定了,美滋滋。
package maidanglao; //1.有四个数字 1,2,3,4,求能组成多少个不同的三位数,并是多少? public class demo_1 { public static void main(String[] args){ int i,j,k; int m = 0; for(i=1;i<=4;i++){ for (j=1;j<=4;j++){ for (k=1;k<=4;k++){ if(i!=j && k!=j && i!=k){ System.out.println(" "+i+j+k); m++; } } } } System.out.println("一共有"+m+"种"); } }
有一个超级好玩的求法,真的越看越有趣
package maidanglao; public class demo_4 { public static int getTotal(int index) { return index > 1 ? index * getTotal(index - 1) : 1; } public static void main(String[] args) { String number[] = {"1", "2", "3", "4"}; System.out.println(number.length); int total = getTotal(number.length); System.out.println("total=" + total); for (int i = 0; i < number.length; i++) { if (i != 0) { String tmp1 = number[i]; number[i] = number[0]; number[0] = tmp1; } for (int j = 1; j < number.length; j++) { for (int k = 1; k < number.length; k++) { if (j != k) System.out.println(number[0] + number[j] + number[k]); } } } } }
开始的那个total的计算方法是用到数学(其实不用这么麻烦,直接在后面一个sum自加就好了),四个数,取三个不同的数字,有序。4*3*2*1,好像是C还是A来着。忘了。
后面的那个if,真的太好玩了,把字数变成字符串,交换字符串位置。不错不错,还考虑了0的情况。
2.给定String,求此字符串的单词数量。字符串不包括标点,大写字母。
package maidanglao; import java.util.HashMap; //.给定String,求此字符串的单词数量。字符串不包括标点,大写字母。例如:String public class demo_2 { public static void main(String[] args){ int count = 0; String str1 ="String hello hi hello"; String str2 =""; HashMap<String,String> m = new HashMap<String,String>(); String [] a = str1.split(" "); for (int i=0;i<a.length;i++){ /** * 判断Map集合中是否包含值为value的键值对 * boolean containsValue(Object value) * * 试过把key 和value对换,发现好像没有什么区别 * 但是这个方法是检测value的,所以有区别 */ if (!m.containsKey(a[i])){ m.put(a[i],"1");//插入键值对数据 put(K key, V value)、1可以是其他值 count++; str2 = str2+" "+a[i]; // System.out.println(m.get(a[i])); } } System.out.println(count+"个"+str2); } }
3.利用条件运算符的嵌套来完成此题,学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
package maidanglao; import java.util.Scanner; /** * 3.利用条件运算符的嵌套来完成此题 * 学习成绩>=90分的同学用A表示, * 0-89分之间的用B表示 * 60分以下的用C表示。 */ public class demo_3 { public static void main(String[] args){ Scanner scanner = new Scanner(System.in); System.out.println("请输入学生成绩"); int a = scanner.nextInt(); String grade = (a >= 90) ? "A" : (a >= 60 && a < 90) ? "B" : "C"; System.out.println(grade); } }
4.请写出合法邮件地址的判断方式。
/^([1-9A-Za-z\-_\.]+)@([0-9a-z]+\.[a-z]{2,3})(\.[a-z]{2})?$/
5.输入某年某月某日,判断这一天是这一年的第几天。
import java.util.*; class Mydate{ int year; int month; int day; int count; int number[] = {31,28,31,30,31,30,31,31,30,31,30,31}; void judge(){ if(year%4==0&&year%100!=0||year%400==0){ number[1]++; } count = day; if(month==1); else for(int i=0;i<month-1;i++){ count+=number[i]; } System.out.println("是第"+count+"天。"); } } public class Ex9{ public static void main(String args[]){ Scanner reader = new Scanner(System.in); Mydate date = new Mydate(); System.out.println("依次输入年月日:"); date.year = reader.nextInt(); date.month = reader.nextInt(); date.day = reader.nextInt(); date.judge(); } }