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;
}
}