某劳的笔试题

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+"种");

}
}
View Code

有一个超级好玩的求法,真的越看越有趣

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]);
                }
            }
        }
    }
}
View Code

  开始的那个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);
    }
}
View Code

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);
}
}
View Code

4.请写出合法邮件地址的判断方式。

/^([1-9A-Za-z-_.]+)@([0-9a-z]+.[a-z]{2,3})(.[a-z]{2})?$/
View Code

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();
    }
}
View Code
原文地址:https://www.cnblogs.com/fzzzjjj/p/11687999.html