一、语句部分习题(下)
2017-11-20 本文已影响5人
孙浩j
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++;
}
- 有字符串“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.打印三角形的时候找到行与列的关系