JAVA语言程序设计(基础篇) 第十版——第六章 方法 (参考答案)

(6.2~6.9节)+(6.10~6.11节)+(6.10~6.12节)

(综合题还未写,以后会更新)

(6.2~6.9节)

6.1(数学:五角数)

import java.util.Scanner;

public class S1 {

	public static void main(String[] args) {
		Scanner input=new Scanner(System.in);
		System.out.print("请问您想要显示前 几个个五角数:");
		int m=input.nextInt();// 显示前 m个五角数
		input.close();
		
		int count=0;
		int shu=0;
		
		for(int n=1; n<=m; n++) {
			count++;
			shu=getPentagonalNumber(n);
			
			if(count%10==0) {
				System.out.println(shu);
			}
			else {
				System.out.print(shu + " ");
			}
		}
		
		
	}
		
	
		//得到五角数的方法
		public static int getPentagonalNumber(int n) {
			return n*(3*n-1)/2 ;	
		}
}

 *6.2(求一个整数各位数字之和)

import java.util.Scanner;

public class S2 {

	public static void main(String[] args) {
		Scanner input=new Scanner(System.in);
		System.out.print("请问您输入一个整数:");
		int n=input.nextInt();
		input.close();
		
		int total=sumDigit(n);
		System.out.println("这个整数的个位数之和为:" + total);
		

	}
	
	public static int sumDigit(long n) {
		int sum=0;
		int count=0;
		while(n%10!=0) {
			count=(int) (n%10);
			sum=sum+count;
			n= n/10;
		}
		
		return sum;
		
	}	
	
	
}

**6.3(回文整数)

import java.util.Scanner;

public class S3 {

	public static void main(String[] args) {
	//回文数,如:(单数)1234321 、(偶数)124421
		Scanner input=new Scanner(System.in);
		System.out.print("请问您输入一个整数:");
		int number=input.nextInt();
		input.close();
		if(isPalindrome(number))
			System.out.println("Yes! "+number+" 是回文数.");
		else
			System.out.println("No. "+number+" 不是回文数.");
	}
	
	//该方法将一个整数反向倒置显示。例如,456——>654
	public static int reverse(int number) {
		String s="";
		while(number%10!=0) {
			s= s + number%10;
			number=number/10;
		}
		
		int count= Integer.parseInt(s);
		return count;
	}
	
	public static boolean isPalindrome(int number) {
		if(number==reverse(number))
			return true;
		else
			return false;
	}

}

*6.4(反向显示一个整数)

import java.util.Scanner;

public class S4 {

	public static void main(String[] args) {
		Scanner input=new Scanner(System.in);
		System.out.print("请问您输入一个整数:");
		int number=input.nextInt();
		input.close();
		reverse(number);

	}
	
	public static void reverse(int number) {
		String s="";
		while(number%10!=0) {
			s= s + number%10;
			number=number/10;
		}
		
		int count= Integer.parseInt(s);
		System.out.print(count);
	}
}

*6.5(对三个数排序)

import java.util.Scanner;

public class S5 {

	public static void main(String[] args) {
		Scanner input=new Scanner(System.in);
		System.out.print("请输入三个数:");
		double n1=input.nextDouble();
		double n2=input.nextDouble();
		double n3=input.nextDouble();
		
		displaySortedNumbers(n1,n2,n3);
		
	}

	private static void displaySortedNumbers(double n1, double n2, double n3) {
		if(n1<n2) {
			// n1 n2
			if(n1>n3) {
				//n3-n1-n2
				System.out.print(n3+" "+n1+" "+n2);
				
			}
			else if(n1<n3){
				//还要拿3和2比较
				if(n2>n3)
					System.out.println(n1+" "+n3+" "+n2);
				else
					System.out.println(n1+" "+n2+" "+n3);
			}
		}
		else if(n1>n2) {
			// n2 n1
			if(n2>n3) {
				System.out.println(n3+" "+n2+" "+n1);
			}
			else if(n2<n3){
			//拿1和3比
				if(n1<n3) {
					System.out.println(n2+" "+n1+" "+n3);
				}
				else {
					System.out.println(n2+" "+n3+" "+n1);
				}
				
			}
		}
			
		
	}

	

}

*6.6(显示图案)

import java.util.Scanner;

public class S6 {

	public static void main(String[] args) {
		Scanner input=new Scanner(System.in);
		System.out.print("请问您输入一个整数:");
		int n=input.nextInt();
		input.close();
		dispalyPattern(n);
		
	}

	private static void dispalyPattern(int n) {
		for(int line = 1;line <= n;line++)
		{	
			// Display the spaces
			for(int i = 1;i <= 2 * (n - line);i++)
				System.out.print(" ");
			
			for(int i = line;i >= 1;i--)
				System.out.printf("%d ",i);
			System.out.print("\n");
		}
		System.out.print("\n");


	}

}

*6.7(财务应用程序:计算未来投资价值)

import java.util.Scanner;

public class S7 {

	public static void main(String[] args) {
		Scanner input=new Scanner(System.in);
		System.out.print("The amount invested: ");
		double investmentAmount=input.nextDouble();
		System.out.print("Annual interest rate: ");
		double annualInterestRate=input.nextDouble();
		double monthlyInterestRate=annualInterestRate/12;
		input.close();
		System.out.println("Years          Future Value ");
		
		for(int years=1; years<=30; years++) {
				System.out.printf(
				" %-3d%18.2f\n",years, futureInvestmentValue(investmentAmount,monthlyInterestRate,years) );
	
		}
		
		
	}
		
		

	private static double futureInvestmentValue(double investmentAmount, double monthlyInterestRate, int years) {
		
		double value= investmentAmount * Math.pow( (1+monthlyInterestRate/100) , 12*years) ;

		return value;
	}
	
	
}

6.8(摄氏度和华氏度之间的转换)

在一个包里创建两个类,我用测试类来调用其他类里面的方法:  例如,int count=s8.方法

package p6;

public class S8 {

	public static double celsiusToFahrenheit(double celsius) {
		double fahrenheit=(9.0/ 5) * celsius + 32;
		return fahrenheit;
	}
	
	public static double fahrenheitToCelsius(double fahrenheit) {
		double celsius=(5.0/ 9) * (fahrenheit - 32);
		return celsius;
	}

}
package p6;

public class Test {

	public static void main(String[] args) {
		System.out.println("摄氏温度           华氏度                    华氏度          摄氏度");
		System.out.println("——————————————————————————————————————————————————————");
		
		for(double celsius=40.0, fahrenheit=120.0; celsius>=31.0 && fahrenheit>=30.0; celsius--,fahrenheit=fahrenheit-10) {
			System.out.printf("%-13.1f%-15.1f %-10.1f%-10.2f \n", celsius, S8.celsiusToFahrenheit(celsius), fahrenheit, S8.fahrenheitToCelsius(fahrenheit));   
		}
	}
}

6.9(英尺和米之间的转换)

一个包里创建的两个类

package p6;

public class S9 {
	//英尺转换米
	public static double footToMeter(double foot) {
		double meter= 0.305 * foot;
		return meter;
	}
	
	//米转换为英尺
	public static double meterToFoot(double meter) {
		double foot= 3.279 * meter;
		return foot;
	}

}
package p6;

public class Test {

	public static void main(String[] args) {
		System.out.println("英尺          米                    米           英尺");
		System.out.println("——————————————————————————————————————————————————————");
		
		for(double foot=1.0, meter=20.0; foot<=10.0 && meter<=65.0; foot++, meter+=5) {
			System.out.printf("%4.1f%8.3f %10.1f%10.3f \n", foot, S9.footToMeter(foot), meter, S9.meterToFoot(meter));   
		}
	}
}

6.10(使用 isPrime方法)

public class S10 {

	public static void main(String[] args) {
		int count=0;//记录素数的个数
		int number=2;
		while(number<10000) {
			if(isPrime(number)) {
				count++;
				if(count%10==0) {
					System.out.printf("%-5s\n",number);
				}
				else {
					System.out.printf("%-5s",number);
				}
			}
			
			number++;
		}
		System.out.println();
		System.out.println("小于10000的素数个数为:"+count);
	}
	
	//判断是否为素数的方法
	public static boolean isPrime(int number) {
		for(int divisor=2; divisor<=number/2; divisor++) {
			if(number % divisor == 0) {
				return false;
			}
		}
		return true;
	}

}

6.11(财务应用程序:计算酬金)

package p6;

public class S11 {

	public static void main(String[] args) {
		
		System.out.println("销售总额                    酬金");
		System.out.println("——————————————————————————");
		for(int salesAmount=10000; salesAmount<=100000; salesAmount+=5000) {
			System.out.printf("%-6d%15.1f\n", salesAmount, computeCommission(salesAmount));
		}
	}
	
	
	public static double computeCommission(double salesAmount){  
		double commission=0;
		if(salesAmount<=5000)
			commission=salesAmount*0.08;
		else if(salesAmount<=10000)
			commission=5000*0.08+(salesAmount-5000)*0.1;
		else
			commission=5000*0.08+(10000-5000)*0.1+(salesAmount-10000)*0.12; 
	
		return commission;
	}
}

6.12(显示字符)

import java.util.Scanner;

public class S12 {

	public static void main(String[] args) {
		Scanner input=new Scanner(System.in);
		System.out.println("您想要从哪个字符开始一直打印到某个字符");
		System.out.print("请输入第1个字符:");
		String s1=input.next();
		System.out.print("请输入第2个字符:");
		String s2=input.next();
		System.out.print("每行打印几个:");
		int numberPerLine=input.nextInt();
		input.close();
		
		char ch1=s1.charAt(0);
		char ch2=s2.charAt(0);
		
		printChar( ch1, ch2, numberPerLine);
	}
	
	
	public static void printChar(char ch1, char ch2, int numberPerLine) { 
		int count=0;
		for(char ch=ch1; ch<=ch2; ch++) {
			count++;
			if(count % numberPerLine == 0) {
				System.out.println(ch);
			}
			else {
				System.out.print(ch + " ");
			}
		}
	}
}

*6.13(数列求和)

public class S13 {

	public static void main(String[] args) {
		System.out.println("i          m(i)");
		System.out.println("————————————————————");
		for(int i=1; i<=20; i++) {
			System.out.printf("%-2d%15.4f\n", i, m(i));
		}

	}
	
	public static double m(int i) {
		double sum=0;
		for(double n=1; n<=i; n++) {
			sum += n/(n+1);
		}
		return sum;
	}
}

*6.14(估算 Π)

public class S14 {

	public static void main(String[] args) {
		System.out.println("i          m(i)");
		System.out.println("————————————————————");
		System.out.printf("%-2d%16.4f\n", 1, m(1));
		for(int i=101; i<=901; i+=100) {
			System.out.printf("%-2d%15.4f\n", i, m(i));
		}

	}
	
	public static double m(int i) {
		double sum=0;
		for(double n=1; n<=i; n++) {
			sum += 4*(Math.pow(-1, n+1) / (2*n-1));
		}
		return sum;
		
	}
	
}

*6.15(财务应用程序:打印税表)

不想吐槽这题了,是什么支撑老娘继续打码的┭┮﹏┭┮

package p6;

public class S15 {

	public static void main(String[] args) {
		System.out.println("Taxable     Single      Married Joint    Married        Head of");
		System.out.println("Income                                   Separate       a House");
		System.out.println("——————————————————————————————————————————————————————————————————");
		
		for(int i=50000; i<=60000; i+=50) {
			System.out.printf("%-12d%-15d%-15d%-15d%-15d\n", i, Math.round(computeTax(0,i)), Math.round(computeTax(1,i)), Math.round(computeTax(2,i)), Math.round(computeTax(3,i)));
		}
	}
	
	public static double computeTax(int status, double taxableIncome) { 
		double tax=0;
		
		//status为0、1、2、3针对每一种身份
		if(status==0) {
			if(taxableIncome<=8350)
				tax=taxableIncome*0.1;
			else if(taxableIncome<=33950)
				tax=8350*0.1+(taxableIncome-8350)*0.15;
			else if(taxableIncome<=82250)
				tax=8350*0.1+(33950-8350)*0.15+(taxableIncome-33950)*0.25;
			else if(taxableIncome<=171550)
				tax=8350*0.1+(33950-8350)*0.15+(82250-33950)*0.25+(taxableIncome-82250)*0.28 ; 
			else if(taxableIncome<=372950)
				tax=8350*0.1+(33950-8350)*0.15+(82250-33950)*0.25+(171550-82250)*0.28+(taxableIncome-171550)*0.33;
			else
				tax=8350*0.1+(33950-8350)*0.15+(82250-33950)*0.25+(171550-82250)*0.28+(372950-171550)*0.33+(taxableIncome-372950)*0.35;   
		}
		else if(status==1) {
			if(taxableIncome<=16700)
				tax=16700*0.1;
			else if(taxableIncome<=67900)
				tax=16700*0.1+(taxableIncome-16700)*0.15;
			else if(taxableIncome<=137050)
				tax=16700*0.1+(67900-16700)*0.15+(taxableIncome-67900)*0.25;
			else if(taxableIncome<=208850)
				tax=16700*0.1+(67900-16700)*0.15+(137050-67900)*0.25+(taxableIncome-137050)*0.28;
			else if(taxableIncome<=372950)
				tax=16700*0.1+(67900-16700)*0.15+(137050-67900)*0.25+(208850-137050)*0.28+(taxableIncome-208850)*0.33;
			else
				tax=16700*0.1+(67900-16700)*0.15+(137050-67900)*0.25+(208850-137050)*0.28+(372950-208850)*0.33+(taxableIncome-372950)*0.35;  
	
		}
		else if(status==2) {
			if(taxableIncome<=8350)
				tax=8350*0.1;
			else if(taxableIncome<=33950)
				tax=8350*0.1+(taxableIncome-8350)*0.15;
			else if(taxableIncome<=68525)
				tax=8350*0.1+(33950-8350)*0.15+(taxableIncome-33950)*0.25;
			else if(taxableIncome<=104425)
				tax=8350*0.1+(33950-8350)*0.15+(68525-33950)*0.25+(taxableIncome-68525)*0.28;
			else if(taxableIncome<=186475)
				tax=8350*0.1+(33950-8350)*0.15+(68525-33950)*0.25+(104425-68525)*0.28+(taxableIncome-104425)*0.33;
			else 
				tax=8350*0.1+(33950-8350)*0.15+(68525-33950)*0.25+(104425-68525)*0.28+(186475-104425)*0.33+(taxableIncome-186475)*0.35;
				
		}
		else if(status==3) {
			if(taxableIncome<=11950)
				tax=11950*0.1;
			else if(taxableIncome<=45500)
				tax=11950*0.1+(taxableIncome-11950)*0.15;
			else if(taxableIncome<=117450)
				tax=11950*0.1+(45500-11950)*0.15+(taxableIncome-45500)*0.25;
			else if(taxableIncome<=190200)
				tax=11950*0.1+(45500-11950)*0.15+(117450-45500)*0.25+(taxableIncome-117450)*0.28;
			else if(taxableIncome<=372950)
				tax=11950*0.1+(45500-11950)*0.15+(117450-45500)*0.25+(190200-117450)*0.28+(taxableIncome-190200)*0.33;
			else
				tax=11950*0.1+(45500-11950)*0.15+(117450-45500)*0.25+(190200-117450)*0.28+(372950-190200)*0.33+(taxableIncome-372950)*0.35;
		}
		else {
			System.out.println("Error: invalid status");
			System.exit(1);
		}
		
		return tax;
	}
	
	
	
}

*6.16(一年的天数)

package p6;

public class S16 {

	public static void main(String[] args) {
		
		for(int year=2000; year<=2020; year++) {
			System.out.println(year+"年有 "+ numberOfDaysInAYear(year)+"天"); 
		}

	}
	
	public static  int numberOfDaysInAYear(int year) {
		int days=0;
		if(isLeapYear( year))
		return	days=366;
		else
		return	days=365;
		
	}
	
	public static boolean isLeapYear(int year) {
		
		return year%400==0 || (year%4==0 && year%100!=0);
	}
}

(6.10~6.11节)

*6.17(显示0和1构成的矩阵)

import java.util.Scanner;

public class S17 {

	public static void main(String[] args) {
		Scanner input =new Scanner(System.in);
		System.out.print("请输入 n :");
		int n=input.nextInt();
		
		printMatrix(n);

	}

	private static void printMatrix(int n) {
		
		for(int i=1; i<=n ; i++) {
			for(int j=1; j<=n; j++) {
				System.out.printf("%2d", (int) (Math.random()*2));
			}
			System.out.println();
		}
			
		
	}

}

**6.18(检测密码)

import java.util.Scanner;

public class S18 {

	public static void main(String[] args) {
		Scanner input =new Scanner(System.in);
		System.out.print("请输入密码  :");
		String s=input.nextLine();
		input.close();
		isPassword(s);

	}

	private static void isPassword(String s) {
		char[] ch=new char[s.length()];
		int count=0;
		int count1=0;
		
		if(s.length()>=8) {
			//先将字符串分配为一个个字符
			for(int i=0; i<s.length(); i++) {
				ch[i]=s.charAt(i);
			}
			
			for(int i=0; i<s.length(); i++) {
				if(Character.isLetterOrDigit(ch[i])) {
					count++;//检测每个字符都是数字和字符了吗,若计数器的值和字符串长度一样,则说明这个字符串里都是字符和数字
				}
			}
			
			//若计数器的值和字符串长度一样,则说明这个字符串里都是字符和数字; 反之,说明这个字符串里并不全都是数字和字符串,有些字符是其他的
			if(count == s.length()) {
				for(int i=0; i<s.length(); i++) {
						if(Character.isDigit(ch[i])) 
							count1++;
					}
				
				if(count1>=2) {
					System.out.println("Valid Password!");
				}
				else {
					System.out.println("Invalid Password.");
				}
				
				
			}
			else {
				System.out.println("Invalid Password.");
			}
				
			
		}
		else if(s.length()<8){
			System.out.println("Invalid Password.");
		}
		
	}

}

*6.19(MyTriangle 类)

package p6;

public class MyTriangle {

	public static boolean isValid(double side1, double side2, double side3) {
		return (side1+side2>side3 && side1+side3>side2 && side2+side3>side1); 
	
	}

	public static double area(double side1, double side2, double side3) {
		
		double s=(side1+side2+side3)/2;
		double area=Math.pow( s*(s-side1)*(s-side2)*(s-side3) ,0.5);
		
		return area;
		

	}
	
}
package p6;

import java.util.Scanner;

public class Test {

	public static void main(String[] args) {
		Scanner input =new Scanner(System.in);
		
		System.out.print("请输入第1条边  :");
		double side1=input.nextDouble();
		System.out.print("请输入第2条边  :");
		double side2=input.nextDouble();
		System.out.print("请输入第3条边  :");
		double side3=input.nextDouble();
	
		
		if( MyTriangle.isValid(side1, side2, side3)) {
			System.out.println(MyTriangle.area(side1, side2, side3));
			
		}
		else {
			System.out.println("Invalid input.");
			//System.exit(0);
		}
	}
}

*6.20(计算一个字符串中字母的个数)

import java.util.Scanner;

public class S20 {

	public static void main(String[] args) {
		Scanner input =new Scanner(System.in);
		System.out.print("请输入一个字符串:");
		String s=input.nextLine();
		input.close();
		
		System.out.println("字符串中的字母个数为: " + countLetters(s));

	}

	public static int countLetters(String s) {
		int count=0;
		char[] ch=new char[s.length()];
		
		for(int i=0; i<s.length(); i++) {
			ch[i]=s.charAt(i);
			if(Character.isLetter(ch[i]))
				count++;
		}
		
		return count;
		
	}
}

*6.21(电话按键盘)

import java.util.Scanner;

public class S21 {

	public static void main(String[] args) {
		Scanner input =new Scanner(System.in);
		System.out.print("Enter a string: ");
		String s=input.nextLine();
		input.close();
		
		char[] ch1=new char[s.length()];
		
		for(int i=0; i<s.length(); i++) {
			ch1[i]=s.charAt(i);
			if(Character.isLetter(ch1[i])) {
				System.out.print(getNumber(ch1[i]));
			}
			else {
				System.out.print(ch1[i]);
			}
		}
		
	
	}
	
	public static int getNumber(char uppercaseLetter) {
		
		char ch=Character.toLowerCase(uppercaseLetter);
		int number=0;
		
		switch(ch) {
		case 'a':
		case 'b':
		case 'c': number=2;
					break;
		case 'd':
		case 'e':
		case 'f': number=3;
					break;
		case 'g':
		case 'h':
		case 'i': number=4;
					break;
		case 'j':
		case 'k':
		case 'l': number=5;
					break;
		case 'm':
		case 'n':
		case 'o': number=6;
					break;
		case 'p':
		case 'q':
		case 'r':
		case 's': number=7;
					break;
		case 't':
		case 'u':
		case 'v': number=8;
					break;
		case 'w':
		case 'x':
		case 'y':
		case 'z': number=9;
					break;
		}
		
		return number;
		
	}
}

**6.22(数学:平方根的近似求法)

import java.util.Scanner;

public class S22 {

	public static void main(String[] args) {
		Scanner input =new Scanner(System.in);
		
		System.out.print("请输入一个数字:");
		long n=input.nextLong();
		
		input.close();
		
		System.out.println("该数的近似平方根为: " + sqrt(n));

	}

	public static double sqrt(long n) {
		double lastGuess=2;//最初的猜测值可以是任意一个正值(例如,1)
		double nextGuess;
		
		
		
		do{
			nextGuess=(lastGuess + n / lastGuess) / 2 ;
			
			lastGuess=nextGuess;
			
		}while( nextGuess-lastGuess >= 0.0001 ) ;
		
		return nextGuess;
		
	}
}

*6.23(指定字符出现次数)

import java.util.Scanner;

public class S23 {

	public static void main(String[] args) {
		Scanner input =new Scanner(System.in);
		System.out.print("请输入一个字符串 :");
		String str=input.nextLine();
		
		System.out.print("请输入一个字符:");
		String s1=input.nextLine();
		input.close();
		char a=s1.charAt(0);
		
		System.out.println("字符'"+a+"'在字符串中出现次数为: "+count(str,a));
		
		

	}

	public static int count(String str, char a) {
		int count=0;
		char[] ch1=new char[str.length()];
		
		for(int i=0; i<str.length(); i++) {
			ch1[i]=str.charAt(i);
			if(ch1[i] == a) {
				count++;
			}
		
		}
		
		return count;
	}
}

(6.10~6.12节)

**6.24(显示当前日期和时间)

略,不会


**6.25(将毫秒数转换成小时数、分钟数和秒数)

import java.util.Scanner;

public class S25 {

	public static void main(String[] args) {
		Scanner input =new Scanner(System.in);
		System.out.print("请输入毫秒数 :");
		long millis=input.nextLong();
		input.close();
		
		System.out.println(convertMillis(millis));

	}

	
	public static String convertMillis(long millis) {
		
		long totalSeconds=millis/1000;
		
		long seconds=totalSeconds%60;//当前秒数
		
		long totalMinutes=totalSeconds/60;
		
		long minutes=totalMinutes%60;//当前分钟
		
		long totalHours=totalMinutes/60;
		
		long hours=totalHours%24;//当前小时
		
		return hours+":"+minutes+":"+seconds;
	}
}
发布了10 篇原创文章 · 获赞 5 · 访问量 2468

猜你喜欢

转载自blog.csdn.net/cxj18867076391/article/details/105176630