方法定义:
由方法名称、参数、返回值类型以及方法体组成(方法具有特定且相对独立的功能)
语法如下:
修饰符 返回值类型 方法名(参数列表){
//方法体;
}
如果方法有返回值,则称为带返回值的方法(value-returning method),否则就称该方法为void方法(void method)
定义在方法头中的变量为形式参数(形参),当调用方法时,就给参数传递一个值,这个值为实际参数(实参)
参数列表:方法中参数的类型、顺序和个数
参数是可选的也就是说可以不包含参数
方法重载
方法名相同 参数个数或参数类型不同,即参数列表必须不同,不能基于不同修饰符或返回值类型来重载方法
变量的作用域
变量的作用域是指变量在程序中引用的范围
方法中定义的变量为局部变量,局部变量必须先声明和赋初值再使用
局部变量的作用域从声明变量的地方开始,直到包含该变量的局部代码块结束为止
for(int i=0;i<=10;i++){//i的起始作用域
for(int j=0;i<=i;j++){//j的起始作用域
}//j的结束作用域
}//i的结束作用域
常用的数学函数:
三角函数
指数函数
取整函数
String相关函数
字符串比较:
获取字符或子串:
编程练习:
import java.util.Scanner;
public class Demo5_1 {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.print("Enter a number:");
long number=scanner.nextLong();
int sum=sumDigits(number);
System.out.println(sum);
}
public static int sumDigits(long n){
int sum=0;
while(true){
sum+=n%10;
n=n/10;
if(n==0){
break;
}
}
return sum;
}
}
import java.util.Scanner;
public class Demo5_2{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个整数:");
int number = scanner.nextInt();
System.out.println(isPalindrome(number));
}
public static int reverse(int number){
String strNumber = ""+number;
String s = "";
for(int i=strNumber.length()-1;i>=0;i--){
s=s+strNumber.charAt(i);
}
return Integer.parseInt(s);
}
public static boolean isPalindrome(int number){
return reverse(number)==number;
}
}
5.3
import java.util.Scanner;
public class Demo5_3 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Enter the number:");
int number = scanner.nextInt();
System.out.println(reverse(number));
}
public static int reverse(int number){
// String str = "";
// while(true){
// int a = number%10;
// str = str+a;
// number/=10;
// if(number==0){
// break;
// }
// }
// return Integer.parseInt(str);
String strNumber = ""+number;
String s = "";
for(int i=strNumber.length()-1;i>=0;i--){
s = s+strNumber.charAt(i);
}
return Integer.parseInt(s);
}
}
import java.util.Scanner;
public class Demo5_4 {
public static void main(String[] args) {
Scanner scanner= new Scanner(System.in);
System.out.println("Enter three numbers:");
double num1 = scanner.nextDouble();
double num2 = scanner.nextDouble();
double num3 = scanner.nextDouble();
displaySortNumbers(num1,num2,num3);
}
public static void displaySortNumbers(double num1,double num2,double num3){
double temp = 0.0;
if(num1>num2&&num1>num3){
temp = num3;
num3 = num1;
num1 = temp;
if(num1>num2){
temp=num2;
num2=num1;
num1=temp;
}
}else if(num2>num1&&num2>num3){//num2最大
temp=num2;
num2=num3;
num3=temp;
if(num1>num2){
temp=num1;
num1=num2;
num2=temp;
}
}else{
if(num1>num2){
temp=num1;
num1=num2;
num2=temp;
}
}
System.out.println(num1+"<"+num2+"<"+num3);
}
}
import java.util.Scanner;
public class Demo5_5 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入行数:");
int Line = scanner.nextInt();
displayPattern(Line);
}
public static void displayPattern(int n){
for(int i=1;i<=n;i++){
for(int k=1;k<=n-i;k++){
System.out.print(" ");
}
for(int j=i;j>=1;j--){
System.out.print(j+" ");
}
System.out.println();
}
}
}
public class Demo5_6 {
public static void main(String[] args) {
for(int celsius=-10;celsius<=40;celsius++){
System.out.println(celsius+":"+celsiusToFahrenheit(celsius));
}
}
public static double celsiusToFahrenheit(double celsius){
return (9.0/5)*celsius+32;
}
public static double fahrenheitToCelsius(double fahrenheit){
return (5.0/9)*(fahrenheit-32);
}
}
public class Demo5_7 {
public static void main(String[] args) {
for(int i=1;i<=10;i++){
double res1 = footToMeter((double)(i));
System.out.print(res1+" ");
System.out.println();
}
for(int j=20;j<=65;j++){
double res2 = meterToFoot((double)(j));
System.out.print(res2);
System.out.println();
}
}
public static double footToMeter(double foot){
return 0.325*foot;
}
public static double meterToFoot(double meter){
return 3.279*meter;
}
}
5.8
//import java.util.Scanner;
public class Demo5_8 {
public static void main(String[] args) {
// System.out.println("请输入一个整数n:");
// Scanner scanner = new Scanner(System.in);
// int number = scanner.nextInt();
System.out.println(" i "+" m(i): ");
for(int number=1;number<=20;number++){
double mi = res(number);
System.out.println(" "+number+" "+mi);
}
}
public static double res(int num){
double sum=0;
for(int i=1;i<=num;i++){
sum=sum+i/i+1;
}
return sum;
}
}
public class Demo5_9 {
public static void main(String[] args) {
System.out.println("i:"+" m(i)");
for(int i=1;i<1000;i+=100){
System.out.println(i+" "+mi(i));
}
}
public static double mi(int num){
double pi = 0;
double flag = 1.0;
for(int i=1;i<=num;i++){
pi = pi+flag/(2*i-1);
flag=-flag;
}
return 4*pi;
}
}
import java.util.Random;
import java.util.Scanner;
public class Demo5_10 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Enter the n:");
int n = scanner.nextInt();
printMatrix(n);
}
public static void printMatrix(int n){
Random random = new Random();
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
System.out.print(random.nextInt(2)+" ");
}
System.out.println();
}
}
}
import java.util.Scanner;
public class Demo5_11 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入密码:");
String password = scanner.nextLine();
if(isPasswordValid(password)){//调用密码是否合法这个函数 如果为true 则合法 否则 密码不合法
System.out.println("Valid Password");
}else{
System.out.println("Invalid Password");
}
}
public static boolean isPasswordValid(String password){//密码是否合法
boolean condition1 = isLengthMorethanEigit(password);
boolean condition2 = isOnlyDigitAndLetter(password);
boolean condition3 = isMorethanTwoDigit(password);
if(condition1&&condition2&&condition3){//如果三个函数都为true 即满足是三个条件,则返回真,否则返回false
return true;
}else{
return false;
}
}
public static boolean isLengthMorethanEigit(String password){//判断长度是否大于8
return password.length()>=8;
}
public static boolean isOnlyDigitAndLetter(String password){//判断是否为字母和数字
for(int i=0;i<password.length();i++){
char c = password.charAt(i);
if(!(isLetter(c)||isDigit(c))){//字母和数字分别为两个函数
return false;
}
}
return true;
}
private static boolean isDigit(char c) {//判断是否为数字
return c>='0'&&c<='9';
}
private static boolean isLetter(char c) {//判断是否为字母
return((c>='a'&&c<='z')||(c>='A'&&c<='Z'));
}
public static boolean isMorethanTwoDigit(String password){//判断是否超过两个数字
return getDigitCount(password)>=2;//返回布尔值(如果大于等于2则返回true,小于2则返回false)
}
private static int getDigitCount(String password) {//判断数字个数
int count=0;
for(int i=0;i<password.length();i++){
char c = password.charAt(i);
if(isDigit(c)){
count++;
}
}
return count;//返回数字个数
}
}
5.12
public class Demo5_12 {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.print("Enter the three side of a triangle:");
double side1=scanner.nextDouble();
double side2=scanner.nextDouble();
double side3=scanner.nextDouble();
System.out.println(area(side1,side2,side3));
}
public static boolean isValid(double side1,double side2,double side3){
// if(((side1+side2)>side3)&&((side2+side3)>side1)&&((side1+side3)>side2)){
// return true;
// }else{
// return false;
// }
return ((side1+side2)>side3)&&((side2+side3)>side1)&&((side1+side3)>side2);
}
public static double area(double side1,double side2,double side3){
if(isValid(side1,side2,side3)){
double s = (side1+side2+side3)/2;
double area = Math.sqrt(s*(s-side1)*(s-side2)*(s-side3));
return area;
}else{
throw new IllegalArgumentException("三边非法!");
}
}
}
import java.util.Scanner;
public class Demo5_13 {
public static void main(String[] args) {
System.out.print("Enter a number:");
System.out.println(sqrt(new Scanner(System.in).nextLong()));
}
public static double sqrt(long n){
double nextGuess=0.0;
double lastGuess=1.0;
while(true){
nextGuess=(lastGuess+n/lastGuess)/2;
if(Math.abs(nextGuess-lastGuess)<0.0001){
break;
}else{
lastGuess=nextGuess;
}
}
return nextGuess;
}
}
public class Demo5_14 {
public static void main(String[] args) {
System.out.println(count("ashdkgasdhjhsagdiasd", 'a'));
}
public static int count(String str,char a){
int count=0;
for(int i=0;i<str.length();i++){
if(str.charAt(i)==a){
count++;
}
}
return count;
}
}
public class Demo5_16 {
public static void main(String[] args) {
int count=0;
int num=2;
while(true){
if(isSuShu(num)&&isHuiWen(num)){
System.out.print(num+" ");
count++;
if(count%10==0){
System.out.println();
}
if(count==100){
break;
}
}
num++;
}
}
public static boolean isSuShu(int num){
boolean flag=true;
for(int i=2;i<num/2;i++){
if(num%i==0){
flag=false;
break;
}
}
return flag;
}
public static boolean isHuiWen(int num){
String s="";
int temp=num;
while(true){
s+=temp%10;
temp/=10;
if(temp==0){
break;
}
}
return Integer.parseInt(s)==num;
}
}
public class Demo5_17 {
public static void main(String[] args) {
int count=0;
int num=2;
while(true){
if(isSuShu(num)&&!isHuiWen(num)&&isSuShu(reverse(num))){
System.out.print(num+" ");
count++;
if(count%10==0){
System.out.println();
}
if(count==100){
break;
}
}
num++;
}
}
public static boolean isSuShu(int num){
boolean flag=true;
for(int i=2;i<num/2;i++){
if(num%i==0){
flag=false;
break;
}
}
return flag;
}
public static boolean isHuiWen(int num){
return reverse(num)==num;
}
public static int reverse(int num){
String s="";
int temp=num;
while(true){
s+=temp%10;
temp/=10;
if(temp==0){
break;
}
}
return Integer.parseInt(s);
}
}
public class Demo5_18 {
public static void main(String[] args) {
for(int p=2;p<=31;p++){
int num = (int)(Math.pow(2, p)-1);
if(sushu(num)){
System.out.println("("+p+" "+num+")");
}
}
}
public static boolean sushu(int num){
boolean flag = true;
for(int i=2;i<=num/2;i++){
if(num%i==0){
flag=false;
break;
}
}
return flag;
}
}
public class Demo5_19 {
public static void main(String[] args) {
for(int i=2;i<998;i++){
if(Demo5_18.sushu(i)&&Demo5_18.sushu(i+2)){
System.out.println(i+":"+(i+2));
}
}
}
}
public class Demo5_20 {
public static void main(String[] args) {
//1:随机生成两个数
//2:计算两个数的和
//2.1 如果两个数的和为2、3、12 lose
//2.2 如果两个数的和为7、11 win
//2.3 如果为4、5、6、8、9、10 继续随机生成两个数
// 2.3.1 如果两个数和为7 lose
// 2.3.2 如果两个数和为上次值 win
// 2.3.3 继续
boolean flag = true;
int lastsum=0;
while(true){
int p1 = (int)(Math.random()*6+1);
int p2 = (int)(Math.random()*6+1);
int sum=p1+p2;
System.out.println("you rolled "+p1+" + "+p2+"="+sum);
if(flag){
if(sum==2||sum==3||sum==12){
System.out.println("you lose!");
break;
}else if(sum==7||sum==11){
System.out.println("you win");
break;
}else{
System.out.println("sum:"+sum);
lastsum=sum;
flag=false;
}
}else{
if(sum==lastsum){
System.out.println("you win");
break;
}else if(sum==7){
System.out.println("you lose");
break;
}else{
System.out.println("sum:"+sum);
lastsum=sum;
}
}
}
}
}
import java.util.Scanner;
public class Demo5_21 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入边数(int)和边长(double):");
int n = scanner.nextInt();
double side = scanner.nextDouble();
System.out.println(Demo5_22.area(n, side));
}
}
5.22
import java.util.Scanner;
public class Demo5_22 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入边数(int)和边长(double):");
int n = scanner.nextInt();
double side = scanner.nextDouble();
System.out.println(area(n,side));
}
public static double area(int n,double side){
double area = (n*side*side)/(4*Math.tan(Math.PI/n));
return area;
}
}
import java.util.Scanner;
public class Demo5_23 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入三点坐标:");
double x0 = scanner.nextDouble();
double y0 = scanner.nextDouble();
double x1 = scanner.nextDouble();
double y1 = scanner.nextDouble();
double x2 = scanner.nextDouble();
double y2 = scanner.nextDouble();
if(leftOfTheLine(x0,y0,x1,y1,x2,y2)){
System.out.println("在左侧");
}else if(oneTheSameLine(x0,y0,x1,y1,x2,y2)){
System.out.println("在线段上");
}else if(ontTheLineSegment(x0,y0,x1,y1,x2,y2)){
System.out.println("在右侧");
}
}
public static boolean leftOfTheLine(double x0,double y0,double x1,double y1,double x2,double y2){
return ((x1-x0)*(y2-y0)-(x2-x0)*(y1-y0))>0;
}
public static boolean oneTheSameLine(double x0,double y0,double x1,double y1,double x2,double y2){
// return ((x1-x0)*(y2-y0)-(x2-x0)*(y1-y0))==0;//可能存在误差0.000001
return Math.abs(((x1-x0)*(y2-y0)-(x2-x0)*(y1-y0)-0))<=0.00001;//
}
public static boolean ontTheLineSegment(double x0,double y0,double x1,double y1,double x2,double y2){
return ((x1-x0)*(y2-y0)-(x2-x0)*(y1-y0))<0;
}
}