Java语言程序设计与数据结构(基础篇)课后练习题 第六章(二)

6.17

package demo;

import java.util.Scanner;

public class diliuzhang {

public static void main(String[] args) {
	System.out.print("Enter n: ");
	Scanner input = new Scanner(System.in);
	int n= input.nextInt();
	printMatrix(n);
}
public static int printMatrix(int n){
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++)
	         System.out.print((int)(2*Math.random())+" ");
	    System.out.print('\n');
		
	}
	return n;
}

}

6.18

package demo;

import java.util.Scanner;

public class diliuzhang {

public static void main(String[] args) {
	System.out.print("Enter your password: ");
	Scanner input = new Scanner(System.in);
	String str = input.nextLine();
	if(isValid(str))
		System.out.println("Valid password.");
	else
		System.out.println("Invalid password.");
}
public static boolean isValid(String str1){
	int len = str1.length();
	int count = 0;
	if(len<8)
		return false;
	for(int i=0;i<len;i++){
		char tmp = str1.charAt(i);
		if((tmp>='a'&&tmp<='z')||(tmp>='A'&&tmp<='Z')||(tmp>='0'&&tmp<='9')){
		}else
			return false;			
	}
	
	for(int i=0;i<len;i++){
		char tmp = str1.charAt(i);
		if(tmp>='0'||tmp<='9')
			count++;
	}
	return count >=2;
}

}

6.19

package demo;

import java.util.Scanner;

public class diliuzhang {

  public static void main(String[] args)
    {
        Scanner input=new Scanner(System.in);
        System.out.print("Enter three sides: ");
        double s1=input.nextDouble();
        double s2=input.nextDouble();
        double s3=input.nextDouble();
        if(isValid(s1,s2,s3))
            System.out.println("The area is "+area(s1,s2,s3));
        else
            System.out.println("The input is invalid.");
    }
 public static boolean isValid(double side1,double side2,double side3){
        return !(side1 >= side2 + side3) && !(side2 >= side1 + side3) && !(side3 >= side1 + side2);
    }
 public static double area(double side1,double side2,double side3){
	 	double p=(side1+side2+side3)/2.0;double area = Math.sqrt(p*(p-side1)*(p-side2)*(p-side3));
        return area;
    }

}

6.20

package demo;

import java.util.Scanner;

public class diliuzhang {

  public static void main(String[] args)
    {
        Scanner input=new Scanner(System.in);
        System.out.print("Enter a string: ");
        String str = input.next();
        System.out.println(str+" has "+countLetters(str)+" letters.");
    }
 public static int countLetters(String s){
     int len = s.length();
     s=s.toLowerCase(); //统一成小写字母。
     int count = 0;
     for(int i=0;i<len;i++){
    	 if(s.charAt(i)>='a'&&s.charAt(i)<='z')
    		 count++;
     }
     return count;
    }

}

6.21

package demo;

import java.util.Scanner;

public class diliuzhang {

 public static void main(String[] args)
    {
        Scanner input=new Scanner(System.in);
        System.out.print("Enter a string: ");
        String str = input.next();
        int len = str.length();
        str=str.toUpperCase(); //转化为大写字母
        for(int i=0;i<len;i++)
        {
            if(str.charAt(i)<='Z'&&str.charAt(i)>='A')
                System.out.print(getNumber(str.charAt(i)));
            else
                System.out.print(str.charAt(i));
        }
        System.out.print('\n');
    }
    public static int getNumber(char uppercaseLetter)
    {
        if(uppercaseLetter=='A'||uppercaseLetter=='B'||uppercaseLetter=='C')
            return 2;
        else if(uppercaseLetter=='D'||uppercaseLetter=='E'||uppercaseLetter=='F')
            return 3;
        else if(uppercaseLetter=='G'||uppercaseLetter=='H'||uppercaseLetter=='I')
            return 4;
        else if(uppercaseLetter=='J'||uppercaseLetter=='K'||uppercaseLetter=='L')
            return 5;
        else if(uppercaseLetter=='M'||uppercaseLetter=='N'||uppercaseLetter=='O')
            return 6;
        else if(uppercaseLetter=='P'||uppercaseLetter=='Q'||uppercaseLetter=='R'||uppercaseLetter=='S')
            return 7;
        else if(uppercaseLetter=='T'||uppercaseLetter=='U'||uppercaseLetter=='V')
            return 8;
        else
            return 9;
    }

}

6.22

package demo;

import java.util.Scanner;

public class diliuzhang {

public static void main(String[] args){
    Scanner input=new Scanner(System.in);
    System.out.print("Enter a integer: ");
    long num = input.nextLong();
    System.out.println("The root is "+sqrt(num));
}
public static double sqrt(long n){
    double lastGuess = 1.0;
    double nextGuess = (lastGuess+n/lastGuess)/2;
    while(Math.abs(lastGuess-nextGuess)>0.0001){
        lastGuess=nextGuess;
        nextGuess=(nextGuess+n/nextGuess)/2;
    }
    return nextGuess;
}

}

6.23

package demo;

import java.util.Scanner;

public class diliuzhang {

public static void main(String[] args){
	
    Scanner input=new Scanner(System.in);
    System.out.print("Enter a string: ");
    String str = input.next();
    System.out.print("Enter a char: ");
    char c = input.next().charAt(0);
    System.out.println("The number of "+c+" in "+str+" is "+count(str,c));
}
public static int count(String str,char a){
	int count = 0;
	for(int i=0;i<str.length()-1;i++){
		if(str.charAt(i)==a)
			count++;
	}
	return count;
}

}

6.24

package demo;

import java.util.Scanner;

public class diliuzhang {

public static void main(String[] args) {
    // System.currentTimeMillis()方法做时间戳
    long totalMilliseconds = System.currentTimeMillis();

    // 从上面方法获得的是毫秒,转化为秒
    long totalSeconds = totalMilliseconds / 1000;

    // 取余,得到当前秒数
    long currentSecond = totalSeconds % 60;

    // 得到完整的分钟
    long totalMinutes = totalSeconds / 60;

    // 取余,得到当前分钟
    long currentMinute = totalMinutes % 60;

    // 得到完整小时
    long totalHours = totalMinutes / 60;

    // 取余,得到当前小时
    long currentHour = totalHours % 24;

    long totalDays = totalHours / 24;

    //从1970年1月1号0时0分0秒(GMT格林威治时间)创建开始计时的,一直延续到今天。不懂的话查百度吧。
    int currentYear = 1970;

    while (totalDays >= 365) {
        if (isLeapYear(currentYear))
            totalDays -= 366;
        else
            totalDays -= 365;
        currentYear++;
    }

    int currentMonths = 1;
    while (totalDays >= 28) {
        if (currentMonths == 1 || currentMonths == 3 || currentMonths == 5 || currentMonths == 7
                || currentMonths == 8 || currentMonths == 10 || currentMonths == 12) {
            totalDays -= 31;
            currentMonths++;
        } else if (currentMonths == 4 || currentMonths == 6 || currentMonths == 9 || currentMonths == 11) {
            totalDays -= 30;
            currentMonths++;
        } else if (isLeapYear(currentYear) && currentMonths == 2) {
            totalDays -= 29;
            currentMonths++;
        } else {
            totalDays -= 28;
            currentMonths++;
        }
    }

    long currentDay;
    if (totalDays == 0)
        currentDay = 1;
    else
        currentDay = totalDays + 1;

    if (currentHour+8 >= 24) {
        currentHour = currentHour+8-24;
    }

    System.out.println("Current data is " + currentYear +
            "-"+currentMonths+"-"+currentDay+ "\nCurrent time is " +
            currentHour+":"+currentMinute+":"+currentSecond+" (GMT+8)");
}

public static boolean isLeapYear(int year) {
    return year % 400 == 0 || (year % 4 == 0 && year % 100 != 0);
}

}

这个程序有点漏洞,可能是因为时差问题,导致日期不符,但是方法和过程都是有理有据,值得借鉴。

6.25

package demo;

import java.util.Scanner;

public class diliuzhang {

public static void main(String[] args){
	    Scanner input=new Scanner(System.in);
	    System.out.print("Enter the milliseconds: ");
	    long ass = input.nextLong();
	    System.out.println(convertMillis(ass));
   }
public static String convertMillis(long millis){
    	  	long s =millis/1000;
    	    long se = s%60;
    	    s/=60;
    	    long min = s%60;
    	    s/=60;
    	    long h = s;
    	    return h+":"+min+":"+se;
    }	    

}

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xupengboo

你的鼓励将是我创作最大的动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值