📌
【学習】TypeScriptとJAVAの比較
ある都市の緯度 latitude、経度 longitude が与えられるので、赤道(equator)、本初子午線(prime meridian)を基準として、その都市が東西南北どこに位置しているかを文字列で返す、calculateLocation という関数を作成してください。文字列は「緯度/経度」の順で表記してください。
TypeScript
function calculateLocation(latitude: number, longitude: number): string {
return getLatitudeDirection(latitude) + " / " + getLongitudeDirection(longitude);
function getLatitudeDirection(latitude: number): string {
if (latitude === 0) {
return "equator";
} else if (latitude > 0) {
return "north";
} else {
return "south";
}
}
function getLongitudeDirection(longitude: number): string {
if (longitude === 0) {
return "prime meridian";
} else if (longitude > 0) {
return "east";
} else {
return "west";
}
}
}
JAVA
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.util.Locale;
class Solution {
public static String calculateLocation(double latitude, double longitude) {
return getLatitudeDirection(latitude) + "/" + getLongitudeDirection(longitude);
}
private static String getLatitudeDirection(double latitude) {
if (latitude == 0) {
return "equator";
} else if (latitude > 0) {
return "north";
} else {
return "south";
}
}
private static String getLongitudeDirection(double longitude) {
if (longitude == 0) {
return "prime meridian";
} else if (longitude > 0) {
return "east";
} else {
return "west";
}
}
}
比較
No. | 項目 | TypeScript | Java |
---|---|---|---|
1 | ファイル全体の構造 | - 関数はグローバルに記述可能。 - 関数内にネストして他の関数を定義できる。 |
- すべてのメソッドはクラス内に定義する必要がある。 - メソッドのネストは不可。 |
2 | 型注釈 | - 引数と戻り値に型注釈を明記する。 - 型はコロン : の後に記述。 |
- 引数と戻り値に型を明記する。 - 型は変数や戻り値の前に記述。 |
3 | 比較演算子 | - 厳密等価演算子 === を使用して、型と値を比較。 |
- 比較演算子 == を使用してプリミティブ型を比較。 |
4 | 関数のスコープ | - 関数を他の関数内にネストして定義可能。 - スコープは外側の関数に閉じる。 |
- メソッドをネストして定義不可。 - メソッドはクラススコープ内で独立して存在。 |
5 | アクセシビリティ修飾子 | - public , private などの修飾子は不要。- エクスポート時に制御可能。 |
- 修飾子 (public , private , protected ) を必ず明記。- 省略時はパッケージプライベート。 |
6 | 文字列の結合 | - テンプレートリテラルや + 演算子を使用。 |
- 文字列結合に + を使用。 |
※JAVAは、セミコロン「;」もないと、テスト通過せず。
1. ファイル全体の構造
TypeScript
function calculateLocation(latitude: number, longitude: number): string {
// メインの関数
return getLatitudeDirection(latitude) + " / " + getLongitudeDirection(longitude);
// ネストされた関数
function getLatitudeDirection(latitude: number): string { ... }
function getLongitudeDirection(longitude: number): string { ... }
}
Java
class Solution {
public static String calculateLocation(double latitude, double longitude) {
// メインのメソッド
return getLatitudeDirection(latitude) + "/" + getLongitudeDirection(longitude);
}
// クラス内で独立したメソッド
private static String getLatitudeDirection(double latitude) { ... }
private static String getLongitudeDirection(double longitude) { ... }
}
2. 型注釈
TypeScript
function calculateLocation(latitude: number, longitude: number): string { ... }
Java
public static String calculateLocation(double latitude, double longitude) { ... }
3. 比較演算子
TypeScript
if (latitude === 0) { return "equator"; }
Java
if (latitude == 0) { return "equator"; }
4. 関数のスコープ
TypeScript
function calculateLocation(latitude: number, longitude: number): string {
function getLatitudeDirection(latitude: number): string { ... }
function getLongitudeDirection(longitude: number): string { ... }
}
Java
private static String getLatitudeDirection(double latitude) { ... }
private static String getLongitudeDirection(double longitude) { ... }
5. アクセシビリティ修飾子
TypeScript
function calculateLocation(latitude: number, longitude: number): string { ... }
Java
public static String calculateLocation(double latitude, double longitude) { ... }
private static String getLatitudeDirection(double latitude) { ... }
6. 文字列の結合
TypeScript
return getLatitudeDirection(latitude) + " / " + getLongitudeDirection(longitude);
Java
return getLatitudeDirection(latitude) + "/" + getLongitudeDirection(longitude);
Discussion