4
怎樣更改我已寫信給指定用戶輸入的號碼是否是一個完美的正方形?如何指定給定的數字是否具有整數平方根?
我曾嘗試放置各種%的展示位置,但沒有成功。我在網上找到的解決方案不使用M.O我的願望。
我將包括一個解決方案,我在網上發現了,我相信這是具有諷刺意味的低效鑑於本書的重點放在避免蠻力技術,似乎並沒有產生預期的效果。
這個問題是從藝術而Java第5章的科學,編程練習7號
/**
* This program tells the user whether the number they've entered returns a perfect square. *
*/
import acm.program.*;
import java.lang.Math;
public class Squares extends ConsoleProgram {
public void run() {
println("This program determines whether the number you're about to enter is a perfect square");
int s = readInt("Enter a positive number here: ");
switch (s) {
}
if (isPerfectSquare(s)) {
;
}
{
println((int) Math.sqrt(s));
}
}
private boolean isPerfectSquare(int m) {
int sqrt = (int) Math.sqrt(m);
return (sqrt * sqrt == m);
}
}
而這裏的,我相信是有缺陷的解決方案:
/*
* File: PerfectSquare.java
* -------------------------
* This program test the isPerfectSquare(n)
* that returns true if the integer n is a
* perfect square.
*/
import acm.program.*;
import java.lang.Math;
public class Book extends ConsoleProgram {
private static final int MIN_NUM = 1;
private static final int MAX_NUM = 100000000;
public void run() {
int cnt = 0;
for (int i = MIN_NUM; i <= MAX_NUM; i++) {
if (isPerfectSquare(i)) {
cnt++;
println(cnt + ": " + (int) Math.sqrt(i) + ": " + i);
}
}
}
private boolean isPerfectSquare(int n) {
int sqrt = (int) Math.sqrt(n);
return (sqrt * sqrt == n);
}
}
如果(M%10不是(0,1,4,5,9)之一){返回false; }否則返回{布魯斯的邏輯;} –
@ElgsQianChen我想我已經給將足以邏輯,不是嗎? –
是的,這只是mod操作比平方根操作便宜得多。但坦率地說,在大多數情況下,如果代碼不經常執行,我不關心這個問題。但是如果你正在進行遊戲編程,那麼這個檢查可能是值得的。 –