Phương thức này là dòng đầu tiên của một phương thức

Các thành phần bắt buộc duy nhất của một khai báo phương thức là kiểu trả về của phương thức, tên, một cặp dấu ngoặc đơn,

run
runFast
getBackground
getFinalData
compareTo
setX
isEmpty
9 và phần thân giữa các dấu ngoặc nhọn,
calculateAnswer(double, int, double, double)
0

Tổng quát hơn, khai báo phương thức có sáu thành phần, theo thứ tự

  1. Công cụ sửa đổi — chẳng hạn như
    calculateAnswer(double, int, double, double)
    
    1,
    calculateAnswer(double, int, double, double)
    
    2 và những công cụ khác mà bạn sẽ tìm hiểu sau
  2. Kiểu trả về—kiểu dữ liệu của giá trị được trả về bởi phương thức hoặc
    calculateAnswer(double, int, double, double)
    
    3 nếu phương thức không trả về giá trị
  3. Tên phương thức—các quy tắc cho tên trường cũng áp dụng cho tên phương thức, nhưng quy ước hơi khác một chút
  4. Danh sách tham số trong ngoặc đơn—một danh sách các tham số đầu vào được phân tách bằng dấu phẩy, trước các loại dữ liệu của chúng, được bao quanh bởi dấu ngoặc đơn,
    run
    runFast
    getBackground
    getFinalData
    compareTo
    setX
    isEmpty
    
    9. Nếu không có tham số, bạn phải sử dụng dấu ngoặc đơn rỗng
  5. Một danh sách ngoại lệ—sẽ được thảo luận sau
  6. Phần thân của phương thức, nằm giữa các dấu ngoặc nhọn—mã của phương thức, bao gồm cả phần khai báo các biến cục bộ, ở đây

Công cụ sửa đổi, kiểu trả về và tham số sẽ được thảo luận sau trong bài học này. Ngoại lệ được thảo luận trong một bài học sau


Sự định nghĩa. Hai trong số các thành phần của khai báo phương thức bao gồm chữ ký phương thức—tên của phương thức và các loại tham số

Chữ ký của phương thức được khai báo ở trên là

calculateAnswer(double, int, double, double)

Đặt tên cho một phương pháp

Mặc dù tên phương thức có thể là bất kỳ mã định danh hợp pháp nào, quy ước mã giới hạn tên phương thức. Theo quy ước, tên phương thức phải là một động từ viết thường hoặc tên nhiều từ bắt đầu bằng một động từ viết thường, theo sau là tính từ, danh từ, v.v. Trong các tên có nhiều từ, chữ cái đầu tiên của mỗi từ thứ hai và các từ tiếp theo phải được viết hoa. Dưới đây là một số ví dụ

run
runFast
getBackground
getFinalData
compareTo
setX
isEmpty

Thông thường, một phương thức có một tên duy nhất trong lớp của nó. Tuy nhiên, một phương thức có thể trùng tên với các phương thức khác do nạp chồng phương thức

phương pháp quá tải

Ngôn ngữ lập trình Java hỗ trợ nạp chồng các phương thức và Java có thể phân biệt giữa các phương thức có chữ ký phương thức khác nhau. Điều này có nghĩa là các phương thức trong một lớp có thể có cùng tên nếu chúng có các danh sách tham số khác nhau (có một số tiêu chuẩn về điều này sẽ được thảo luận trong bài học có tiêu đề "Giao diện và Kế thừa")

Giả sử rằng bạn có một lớp có thể sử dụng thư pháp để vẽ các loại dữ liệu khác nhau (chuỗi, số nguyên, v.v.) và có chứa một phương thức để vẽ từng loại dữ liệu. Thật khó để sử dụng một tên mới cho mỗi phương thức—ví dụ:

calculateAnswer(double, int, double, double)
0,
calculateAnswer(double, int, double, double)
1,
calculateAnswer(double, int, double, double)
2, v.v. Trong ngôn ngữ lập trình Java, bạn có thể sử dụng cùng một tên cho tất cả các phương thức vẽ nhưng chuyển một danh sách đối số khác cho mỗi phương thức. Như vậy, lớp vẽ dữ liệu có thể khai báo bốn phương thức có tên là
calculateAnswer(double, int, double, double)
3, mỗi phương thức có một danh sách tham số khác nhau

public class DataArtist {
    ...
    public void draw(String s) {
        ...
    }
    public void draw(int i) {
        ...
    }
    public void draw(double f) {
        ...
    }
    public void draw(int i, double f) {
        ...
    }
}

Các phương thức quá tải được phân biệt bởi số lượng và loại đối số được truyền vào phương thức. Trong mẫu mã,

calculateAnswer(double, int, double, double)
4 và
calculateAnswer(double, int, double, double)
5 là các phương thức riêng biệt và duy nhất vì chúng yêu cầu các loại đối số khác nhau

Bạn không thể khai báo nhiều hơn một phương thức có cùng tên, cùng số lượng và loại đối số, vì trình biên dịch không thể phân biệt chúng

Trình biên dịch không xem xét kiểu trả về khi phân biệt các phương thức, vì vậy bạn không thể khai báo hai phương thức có cùng chữ ký ngay cả khi chúng có kiểu trả về khác nhau

ngói kim cương. Viết chương trình DiamondTile. java nhận một đối số dòng lệnh N và tạo một ô kim cương N-by-N. Bao gồm các phương thức tĩnh diamond() và fillDiamond()

gạch lục giác. Viết chương trình HexTile. java nhận một đối số dòng lệnh N và tạo một ô hình lục giác N-by-N. Bao gồm các phương thức tĩnh hexagon() và fillHexagon()

Phân phối tích lũy Gaussian nghịch đảo. Giả sử điểm toán SAT có phân phối chuẩn với trung bình 500 và độ lệch chuẩn. Ước tính học sinh phải đạt điểm cao bao nhiêu để lọt vào top 10%. Để làm điều này, bạn cần tìm giá trị z sao cho Φ(z, 500, 100) = 0. 9. Dấu. sử dụng tìm kiếm nhị phân

điểm SAT. Một trường đại học nổi tiếng phía đông bắc nhận được 20.000 đơn đăng ký của sinh viên. Giả sử rằng điểm SAT của những cá nhân này được phân phối bình thường với trung bình 1200 và độ lệch chuẩn 100. Giả sử trường đại học quyết định nhận 5.000 sinh viên có điểm SAT cao nhất. Ước tính điểm thấp nhất vẫn sẽ được nhận

máy bỏ phiếu. Giả sử trong dân số 100 triệu cử tri, 51% bầu cho ứng cử viên A và 49% bầu cho ứng cử viên B. Tuy nhiên, các máy bỏ phiếu dễ mắc lỗi và 5% thời gian chúng đưa ra câu trả lời sai. Giả sử các lỗi được thực hiện một cách độc lập và ngẫu nhiên, liệu tỷ lệ lỗi 5% có đủ để làm mất hiệu lực kết quả của một cuộc bầu cử sát sao không?

Biểu đồ của người đánh bạc. Viết chương trình RandomWalk. java nhận một tham số dòng lệnh M và mô phỏng một người đánh bạc bắt đầu bằng M, người đặt chính xác M cược một đô la

  1. Tạo biểu đồ về số tiền mà người chơi cờ bạc thu được bằng cách chạy thử nghiệm này N lần
  2. Số tiền mà con bạc thu được tuân theo phân phối nhị thức với trung bình M và phương sai N/4. Phân phối có thể được xấp xỉ bằng một phân phối bình thường với cùng một giá trị trung bình và phương sai. Tạo một biểu đồ trong khoảng thời gian mà bạn mong muốn người đánh bạc kết thúc với số tiền trong mỗi thùng biểu đồ
Sắp xếp chương trình của bạn thành nhiều chức năng

Lấy mẫu thống kê. Viết chương trình Lấy mẫu. java lấy một mẫu ngẫu nhiên gồm N người và hỏi họ một câu hỏi có/không. Tính khoảng tin cậy 95%

bài xì dách. Viết chương trình Blackjack. java chơi chiến thuật cơ bản hay viết chương trình BlackjackCounter. java triển khai hệ thống đếm thẻ cao thấp

Wavelet. Các ứng dụng cho thị giác máy tính, thị giác con người, xử lý giọng nói, nén cơ sở dữ liệu dấu vân tay của FBI, lọc dữ liệu nhiễu, phát hiện sự tương tự trong chuỗi thời gian, tổng hợp âm thanh, đồ họa máy tính, hình ảnh y tế, phân tích sự kết tụ của các thiên hà và phân tích nhiễu loạn. Hàm Haar được xác định bởi Φ(x) = 1 nếu 0 ≤ x < 1/2, Φ(x) = -1 nếu 1/2 ≤ x < 1 và Φ(x) = 0 nếu ngược lại. Đối với số nguyên m và n, hàm cơ sở Haar Φm,n(x) = 2-m/2 Φ(2-mx - n). Viết chương trình Haar. java nhận hai đầu vào số nguyên M và N, và một đầu vào thực x và in ra Φm,n(x). Hoặc có thể âm mưu nó?

bài baccarat. Baccarat là một trò chơi bài đơn giản đã được lãng mạn hóa trong phim James Bond. Khi người chơi được chia chín, người chia bài tuyên bố "neuf a la banque". Viết chương trình xác định cơ hội chiến thắng của bạn

  • điểm thẳng hàng. Viết một chức năng
    public boolean areCollinear(int x1, int y1, int x2, int y2, int x3, int y3)
    

    trả về true nếu ba điểm (x1, y1), (x2, y2) và (x3, y3) nằm trên cùng một đường thẳng và trả về false nếu không

  • Chức năng lỗi Gauss. Hàm sai số là hàm phát sinh trong xác suất, thống kê và nghiệm phương trình vi phân. Ví dụ: Φ(z) = 1/2 + (1 + erf(z / sqrt(2))), trong đó Φ(z) là hàm phân phối tích lũy Gauss được xác định ở trên
    Phương thức này là dòng đầu tiên của một phương thức

    Tích phân không có nghiệm dạng đóng xét về hàm sơ cấp nên ta dùng xấp xỉ. Khi z không âm, ước tính phù hợp Ch Quashev dưới đây chính xác đến 7 chữ số có nghĩa

    Phương thức này là dòng đầu tiên của một phương thức

    Nếu z âm, hãy sử dụng danh tính erf(z) = -erf(-z). Một cách đặc biệt hiệu quả để thực hiện nó là thông qua việc sử dụng hợp lý các dấu ngoặc đơn được gọi là phương pháp của Horner. Viết hàm erf() trong ErrorFunction. java lấy một đầu vào thực z và tính toán hàm lỗi bằng công thức trên

  • Haversine. Viết một hàm haversine() nhận vào một đối số kép θ và trả về haversine(θ) = (sin(θ/2))^2
  • nhiệt độ đất. (Cleve Moler) Giả sử nhiệt độ đất là Ti (20 độ C) đồng đều ở bề mặt và bên dưới. Một đợt không khí lạnh di chuyển vào và nhiệt độ bề mặt Ts (-15 C) sẽ duy trì trong tương lai gần. Nhiệt độ T(x, t) tại thời điểm t giây của đất ở x mét bên dưới bề mặt được cho bởi T(x, t) = Ts + (Ti - Ts)erf(x / 2 sqrt(alpha t)), . 138 * 10^-6 m^2 / s) là hệ số dẫn nhiệt của đất. Nhiệt độ ở độ cao 10 mét sau 30 ngày tiếp xúc với những điều kiện này là bao nhiêu?
  • tào lao. Tính xác suất thắng cược vượt qua trong craps. Dưới đây là quy tắc đặt cược vượt qua. Gieo hai con xúc xắc 6 mặt, gọi x là tổng của chúng
    • nếu x là 7 hoặc 11, bạn thắng ngay lập tức
    • nếu x là 2, 3 hoặc 12, bạn thua ngay lập tức
    • mặt khác, liên tục tung hai con xúc xắc cho đến khi tổng của chúng là x hoặc 7
      • nếu tổng của họ là x, bạn thắng
      • nếu tổng của họ là 7, bạn thua

    chương trình craps. java nhận tham số dòng lệnh N và mô phỏng N lần đặt cược. Tổ chức của chương trình được hưởng lợi từ hai chức năng trợ giúp. sumOfTwoDice và thắngPassBet. Cả hai hàm đều có một tính năng thú vị - chúng không nhận bất kỳ đối số đầu vào nào. Chức năng đầu tiên mô phỏng việc ném hai con xúc xắc. Điều này trả về một số nguyên từ 2 đến 12, nhưng không phải tất cả các giá trị đều có khả năng như nhau. Để mô phỏng xác suất một cách chính xác, chúng tôi gọi StdRandom. random(6) hai lần và một để tạo số từ 1 đến 6. Sau đó, chúng tôi thêm hai giá trị. Hàm thứ hai trả về giá trị boolean. đúng nếu chúng tôi thắng cược vượt qua và sai nếu không. Hàm này có một số câu lệnh trả về. Ngay khi cái đầu tiên được thực thi, hàm sẽ kết thúc với giá trị trả về đã cho

  • thang âm nhạc. Dùng hàm note() viết chương trình Scale. java để chơi một quy mô lớn
  • thử nghiệm nguyên thủy. Tạo một hàm isPrime() nhận vào một đối số nguyên N và trả về true hoặc false tùy thuộc vào việc N có phải là số nguyên tố hay không
    run
    runFast
    getBackground
    getFinalData
    compareTo
    setX
    isEmpty
    
    0
  • Kiểm tra số định tuyến chuyển tiền điện tử. Với số định tuyến EFT gồm 9 chữ số a1a2a3a4a5a6a7a8a9, phương trình kiểm tra là
    3 a1 + 7a2 + a3 + 3a4 + 7a5 + a6 +3a7 +7a8 +a9 mod 10 = 0
    Kiểm tra tham chiếu chữ số
  • Viết một phương thức tĩnh nint() lấy một số thực làm tham số và trả về số nguyên gần nhất. Không sử dụng bất kỳ chức năng thư viện Toán học nào, thay vào đó hãy sử dụng tính năng truyền
  • Viết một phương thức tĩnh int mod(int a, int n), trong đó a là một số nguyên và n là một số nguyên dương, và trả về một mod n. Điều này tương ứng với a %n khi a dương, nhưng nếu a âm, a %n trả về một số nguyên không dương
  • Giá trị hiện tại
    1. Viết một phương thức fv tính toán số tiền bạn sẽ có nếu hôm nay bạn đầu tư C đô la với lãi suất kép của r mỗi kỳ, trong T kỳ. Công thức cho giá trị tương lai được đưa ra bởi C*(1 + r)^T
    2. Viết phương pháp pv tính toán số tiền sẽ phải được đầu tư ngay bây giờ, với lãi suất kép r mỗi kỳ, để thu được dòng tiền C trong T kỳ. Công thức cho giá trị hiện tại được đưa ra bởi C/(1 + r)^T
  • ACT là một bài kiểm tra tiêu chuẩn hóa khác. Giả sử rằng điểm kiểm tra tuân theo phân phối Gauss với giá trị trung bình là 18 và độ lệch chuẩn là 6. Cũng giả định rằng thí sinh thi SAT và ACT không thể phân biệt được. Cái nào tốt hơn, điểm SAT là 620 hay ACT là 26?
  • Viết chương trình Giai thừa. java lấy một dòng lệnh số nguyên đầu vào n và in ra n. = 1 * 2 *. * N. Viết một hàm có chữ ký sau
    run
    runFast
    getBackground
    getFinalData
    compareTo
    setX
    isEmpty
    
    1

    Giá trị lớn nhất của n mà hàm của bạn có thể xử lý mà không bị tràn là bao nhiêu?

  • Điều gì là sai với chức năng sau đây?
    run
    runFast
    getBackground
    getFinalData
    compareTo
    setX
    isEmpty
    
    2

    Câu trả lời. Hàm được khai báo để trả về giá trị kiểu int. Câu lệnh return đầu tiên là sai vì nó không trả về gì cả. Câu lệnh return thứ hai sai vì nó trả về giá trị kiểu double

  • Làm gì sau đây?
    run
    runFast
    getBackground
    getFinalData
    compareTo
    setX
    isEmpty
    
    3

    Câu trả lời. Nó in 17 hai lần. Một hàm không thể thay đổi giá trị của một biến kiểu nguyên thủy trong một hàm khác

  • Viết một hàm nhận ba đối số thực, x, y và s, và vẽ một tam giác đều có tâm là (x, y) với độ dài cạnh s. Gọi chức năng một số lần trong main để tạo ra một mẫu thú vị
  • Hàm nào sau đây trả về giá trị nhỏ nhất trong bốn đầu vào của nó?
    run
    runFast
    getBackground
    getFinalData
    compareTo
    setX
    isEmpty
    
    4
  • Bạn sẽ tiến hành kiểm tra xem một trong các hàm trong bài tập trước có thực hiện những gì nó yêu cầu không?

    Câu trả lời. bạn không thể hy vọng kiểm tra nó trên mọi đầu vào có thể tưởng tượng được vì có 2128 đầu vào có thể khác nhau. Thay vào đó, hãy kiểm tra nó trên cả 4. = 24 trường hợp tùy thuộc vào a < b, a < c,. , c < đ. Hoặc tất cả 4^4 hoán vị của 0, 1, 2 và 3

  • Có gì sai với cuộc gọi phương thức sau đây?
    run
    runFast
    getBackground
    getFinalData
    compareTo
    setX
    isEmpty
    
    5

    Nó khai báo lại biến y khi gọi hàm sqrt()

  • răng cưa. Viết chương trình SawTooth. java để vẽ đồ thị 2/pi [sin(1t)/1 + sint(2t)/2 + sin(3t)/3 +. ]. Khi bạn vẽ càng nhiều thuật ngữ, sóng sẽ hội tụ thành sóng răng cưa. Sau đó phát nó bằng âm thanh tiêu chuẩn
  • sóng vuông. Ô 4/pi [sin(1*2*pi*t)/1 + sint(3*2*pi*t)/3 + sin(5*2*pi*t)/5 +. ]. Khi bạn vẽ càng nhiều thuật ngữ, sóng sẽ hội tụ thành sóng vuông. Sau đó phát nó bằng âm thanh tiêu chuẩn
  • Viết chương trình in lời bài hát Old McDonald
    run
    runFast
    getBackground
    getFinalData
    compareTo
    setX
    isEmpty
    
    6
  • Viết phương thức tĩnh maxwellBoltzmann() trả về giá trị giả ngẫu nhiên từ phân phối Maxwell-Boltzmann với tham số σ. Để tạo ra một giá trị như vậy, hãy lấy tổng bình phương của ba biến ngẫu nhiên Gauss với giá trị trung bình bằng 0 và độ lệch chuẩn σ, rồi trả về căn bậc hai. Tốc độ của các phân tử trong khí lý tưởng có phân bố Maxwell-Boltzmann, trong đó tham số σ liên quan đến XYZ
  • Viết một phương thức tĩnh reverse1() lấy một mảng chuỗi làm đối số và tạo một mảng mới với các mục theo thứ tự đảo ngược (và không thay đổi thứ tự của các mục trong mảng đối số). Viết một phương thức tĩnh reverse2() lấy một mảng chuỗi làm đối số và đảo ngược các mục nhập của nó. Đặt mã của bạn trong chương trình Đảo ngược. java
  • Hàm nào được gọi bởi f(1, 2) nếu tôi có hai hàm bị quá tải
    run
    runFast
    getBackground
    getFinalData
    compareTo
    setX
    isEmpty
    
    7

    Dung dịch. Thông thường, các quy tắc thăng hạng kiểu của Java sẽ thúc đẩy một trong hai đối số int tăng gấp đôi. Tuy nhiên, trong trường hợp này, điều đó sẽ dẫn đến hai chữ ký quá tải phù hợp. Vì Java không thể giải quyết sự mơ hồ, Quá tải. java dẫn đến lỗi thời gian biên dịch

  • Giá trị ngẫu nhiên Gaussian. Thử nghiệm với phương pháp sau để tạo các biến ngẫu nhiên từ phân phối Gaussian, phương pháp này dựa trên việc tạo một điểm ngẫu nhiên trong vòng tròn đơn vị và sử dụng một dạng biến đổi Box-Muller. (xem Bài tập 1. 2. 27 và phần thảo luận về do-while ở cuối Phần 1. 3)
    run
    runFast
    getBackground
    getFinalData
    compareTo
    setX
    isEmpty
    
    8

    Lấy một đối số dòng lệnh N và tạo N số ngẫu nhiên, sử dụng một mảng a[20] để đếm các số được tạo nằm trong khoảng i*. 05 và (i+1)*. 05 cho tôi từ 0 đến 19. Sau đó, sử dụng StdDraw để vẽ các giá trị và so sánh kết quả của bạn với đường cong hình chuông thông thường

    Nhận xét. Phương pháp này được ưa thích hơn phương pháp được mô tả trong Bài tập XYZ về cả hiệu quả và độ chính xác. Mặc dù nó liên quan đến một vòng lặp, nhưng vòng lặp do-while chỉ được thực hiện 4 / π = 1. trung bình 273 lần. Điều này làm giảm tổng số cuộc gọi dự kiến ​​​​đến các chức năng siêu việt

    Phương thức trong Java là gì?

    Một phương thức là một khối mã chỉ chạy khi nó được gọi . Bạn có thể truyền dữ liệu, được gọi là tham số, vào một phương thức. Các phương thức được sử dụng để thực hiện một số hành động nhất định và chúng còn được gọi là các hàm.

    Tên phương pháp là gì?

    Tên phương thức. Đó là một tên duy nhất được sử dụng để xác định tên của một phương thức . Nó phải tương ứng với chức năng của phương thức. Giả sử, nếu chúng ta đang tạo một phương thức để trừ hai số, tên phương thức phải là phép trừ(). Một phương thức được gọi theo tên của nó.

    Phương pháp là gì và được sử dụng như thế nào?

    meth·​od ˈmeth-əd. . thủ tục hoặc quy trình để đạt được một đối tượng . như. . một quy trình, kỹ thuật hoặc phương thức điều tra có hệ thống được sử dụng bởi hoặc phù hợp với một chuyên ngành cụ thể xem phương pháp khoa học. . một cách, kỹ thuật, hoặc quá trình hoặc để làm một cái gì đó.

    Tiêu đề phương thức trong Java là gì?

    Tiêu đề phương thức bao gồm các công cụ sửa đổi truy cập (tĩnh công khai), kiểu trả về (int), tên phương thức (min) và các tham số (int a, int b); if this method threw any exceptions, they would appear next. We should be very familiar with reading method headers in Javadoc from a previous lecture.