一、语句部分习题(下)

作者: 孙浩j | 来源:发表于2017-11-20 13:02 被阅读5次

    1.检验控制台输入的日期是否合法

    import java.util.*;
    
    import java.text.SimpleDateFormat;
    
    class Demo11
    
    {
    
    public static void main(String[] args)
    
    {
    
    System.out.println("请输入一个日期格式为xxxx-yy-zz");
    
    Scanner in=new Scanner(System.in);
    
    String s=in.next();
    
    System.out.println(s);
    
    int year=(s.charAt(0)-48)*1000+(s.charAt(1)-48)*100+(s.charAt(2)-48)*10+(s.charAt(3)-48);
    
    int month=(s.charAt(5)-48)*10+(s.charAt(6)-48);
    
    int day=(s.charAt(8)-48)*10+(s.charAt(9)-48);
    
    int day1=0;
    
    if(month<=12&&month>=1){
    
    System.out.println("你输入的是合法的月份");
    
    if(month==1||month==3||month==5||month==7||month==8||month==10||month==12){
    
    day1=31;
    
    }else if(month==4||month==6||month==9||month==11){
    
    day1=30;
    
    }else {
    
    if(year%4==0&&year%100!=0||year%400==0){
    
    day1=29;
    
    }else{
    
    day1=28;
    
    }
    
    }
    
    if(day>=day1){
    
    System.out.println("日期不合法");
    
    }else{
    
    System.out.println("你输入的是合法的日期");
    
    }
    
    }
    
    else{
    
    System.out.println("月份不合法");
    
    }
    
    }
    
    }
    

    2.判断是不是质数

    
    Scanner s = new Scanner(System.in);
    
    System.out.println("输入判断的数");
    
    int a = s.nextInt();
    
    for(int i=2 ; i<=a;i++){    //最小的质数是2
    
    if(a % i == 0&& i != a){  //除了1和本身之后没有约数即为质数
    
    System.out.println("不是质数");
    
    break;
    
    }else if(i == a){                   //i一直再加,当i=a的时候还没有输出不是质数,它就不是质数
    
    System.out.println("是质数");
    
    a不断除i ,a除2,a除3,a除4,直到a除a之前都没有执行第一个if,此时i=a了,证明a除了1和本身之后没有约数,所以当a==i时它为质数
    
    首先你会写出判断不是质数的代码,如果后边不写的话,如果一个数是质数会一直循环却不会输入任何东西,而简单加一个else的话,如果它是质数,每次a % i 不等于 0,每次都会输出一个是质数,这时我们应该想如何才能实现不是每一次不除开都输出是质数,而是当除不开其本身以外的所有数的时候才输出是质数,而i一直相加,所以说当i等于a之前这个程序都没有结束,就可以输出它是质数
    
    

    3.找出一个数的质因数

    思路:输入一个数,最小的质因子是2,当质因子小于这个数的时候进行判断,先看看这个数能不能除开2,如果能除开,则有一个因数为2,使这个数等于除2后的数,进入循环;如果除不开的话,将质因子加1后重新进入循环

    System.out.println("请输入一个数");
    
    Scanner in=new Scanner(System.in);
    
    int a=in.nextInt();
    
    int b=2;
    
    System.out.print(a+"=");
    
    while(b<=a){
    
    if(a==b){
    
    System.out.print(a);
    
    break;
    
    }else if(a%b==0){
    
    System.out.print(b+"*");
    
    a=a/b;
    
    }
    
    else b++;
    
    }
    
    1. 有字符串“asdfasdf” 与“asdfliuyasdflkjh” 求两个字符串的最大相同子串
    System.out.println("请输入第一个字符串");
    
    Scanner in=new Scanner(System.in);
    
    String s1=in.next();
    
    System.out.println("请输入第二个字符串");
    
    in=new Scanner(System.in);
    
    String s2=in.next();
    
    String s11=null;
    
    String min=s1.length()>s2.length()?s2:s1;
    
    String max=s1.length()>s2.length()?s1:s2;
    
    out:for(int i=min.length();i>0;i--){  //字串长度
    
    for(int j=0;j+i<=max.length();j++){  //字串位置
    
    String s=min.substring(j,i+j);
    
    if(max.indexOf(s)>=0){   //看看能不能找到
    
    s11=s;
    
    break out;    //设置一个标签,当发现一个最大的字串的时候
    
    }    //不再找比它小的字串,直接跳出所有循环,进行输出
    
    }
    
    }
    
    System.out.println(s11);
    
    

    5.打印三角形的时候找到行与列的关系

    相关文章

      网友评论

        本文标题:一、语句部分习题(下)

        本文链接:https://www.haomeiwen.com/subject/daumvxtx.html