質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

2回答

863閲覧

javaで作成したプログラムをホームページまたはhtmlで実行したい

inori333

総合スコア4

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2022/09/16 12:29

前提

ここに質問の内容を詳しく書いてください。
(例)
visual stdioで車を検索するシステムを作成したのですが、それをホームページまたはhtmlで実行できるようにしたいのですがどのようにすればいいのかがわかりません。
ちなみにjavaを使って書き、そのコードは下にあるソースコードの欄に載せておきます。

実現したいこと

ここに実現したいことを箇条書きで書いてください。
-作成したコードをホームページまたはhtmlで実行できるようにしたい。

発生している問題・エラーメッセージ

該当のソースコード

import java.io.IOException; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Paths; import java.util.*; import java.util.function.Predicate; public class CarDealer { public static void main(String[] args) { CarDealer dealer = null; try { dealer = new CarDealer("car_data.csv"); //args[0] } catch(IOException e) { System.out.println("読み込みに失敗しました"); System.out.println("プログラムを終了します"); e.printStackTrace(); return; } try(Scanner sc = new Scanner(System.in)) { while(true) { System.out.println("/MENU/"); System.out.println("「0」車一覧「1」検索「2」終了 "); int a = Integer.parseInt(sc.nextLine()); if(a == 0) { dealer.printList(); } else if(a == 1) { System.out.println("検索の仕方を選択してください"); System.out.println("「0」車種名「1」値段「2」オプション"); int b = Integer.parseInt(sc.nextLine()); if(b == 0) { System.out.println("車種名を入力してください"); String name = sc.nextLine(); dealer.search(name); } else if(b == 1) { System.out.println("上限金額を入力してください"); int price_max = Integer.parseInt(sc.nextLine()); System.out.println("下限金額を入力してください"); int price_min = Integer.parseInt(sc.nextLine()); dealer.search(price_max, price_min); } else if(b == 2) { System.out.println("欲しいオプションを一つ選んでください"); StringBuilder sb = new StringBuilder(); for(int i=0; i<Car.Option.values().length; i++) { sb.append("「").append(i).append("」").append(Car.Option.values()[i].name); } System.out.println(sb.toString()); int i = Integer.parseInt(sc.nextLine()); dealer.search(Car.Option.values()[i]); } } else if(a == 2) { break; } else if(a > 2){ System.out.println("エラー*(以下の数字を入力してください)"); System.out.println("「0」車種名「1」値段「2」オプション"); } } System.out.println("ありがとうございました"); } } static class Car { enum Option { KEY("キーレス"), SMART("スマートキー"), POWER("パワーウィンドウ"), SHEET("ベンチシート"), HEATER("シートヒーター"), COOLER("シートクーラー"), LEATHER("本革シート"), OTTOMAN("OTTOMAN"), THREE("3列シート"), MONITOR("後席モニター"); final String name; Option(String name) { this.name = name; } } final String name; final int price; final Set<Option> options; Car(String name, int price, Set<Option> options) { this.name = name; this.price = price; this.options = Set.copyOf(options); } void print() { System.out.println("名前: " + name); System.out.println("値段: " + String.format("%,d円", price)); System.out.print("オプション: "); StringJoiner sj = new StringJoiner(","); sj.setEmptyValue("(無し)"); for(Car.Option option : options) sj.add(option.name); System.out.println(sj.toString()); } } private List<Car> carList = new ArrayList<>(); CarDealer(String filename) throws IOException { List<String> lines = Files.readAllLines(Paths.get(filename), StandardCharsets.UTF_8); for(String line : lines) carList.add(parseCSV(line)); } private Car parseCSV(String line) throws NumberFormatException { String[] tokens = line.split(","); String name = tokens[0]; int price = Integer.parseInt(tokens[1]); Set<Car.Option> options = EnumSet.noneOf(Car.Option.class); for(int i=0; i<Car.Option.values().length; i++) { if(Integer.parseInt(tokens[2+i]) == 1) options.add(Car.Option.values()[i]); } return new Car(name, price, options); } void printList() { System.out.println("車一覧"); for(Car car : carList) System.out.println(car.name); } void search(String name){ searchAndPrint(car -> car.name.equals(name)); } void search(int max, int min){ searchAndPrint(car -> min <= car.price && car.price <= max); } void search(Car.Option option){ searchAndPrint(car -> car.options.contains(option)); } private void searchAndPrint(Predicate<Car> predicater) { boolean found = false; for(Car car : carList) { if(predicater.test(car)) { car.print(); found = true; } } if(!found) { System.out.println("該当する車種は存在しません"); } } }

試したこと

補足情報(FW/ツールのバージョンなど)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dodox86

2022/09/16 13:07

> 作成したコードをホームページまたはhtmlで実行できるようにしたい。 文言そのままの意味では現実的にほぼ不可能ですが、Javaサーブレットが動く環境を構築し、理解した上でScannerの入力をHTMLでのフォームの入力にし、出力をHTMLにするようにすれば不可能ではありません。ですが初心の方でいきなり全部は恐らく無理です。
dodox86

2022/09/16 13:15

標準入出力(stdin, stdout)をなるべくそのまま利用したいということであればCGIと言う形態が考えられますが、(現役ではあるものの)古い技術であり、これもまた初心の方には勘所を掴むのが難しいと思います。
jimbe

2022/09/17 02:47 編集

「ホームページまたはhtml」が環境・言語的にどのように動作しているのかを理解することからでしょうか。 というか、提示されたコードは前の質問に私が書いたコードほぼそのままのようですが、それを「ちなみにjavaを使って書き、そのコードは下にあるソースコードの欄に載せておきます」とは、どこまで理解されているのかも怪しく感じます。
dodox86

2022/09/17 10:35

> というか、提示されたコードは前の質問に私が書いたコードほぼそのままのようですが、 これはまたひどい話ですね。
guest

回答2

0

基本的に、できません。ブラウザにJavaを実行する機能がないからです。


「Java アプレット」というブラウザでJavaを動かす仕組みが昔はありました。今のブラウザでは使えません。

JavaコードをJavaScriptやWASMに変換してブラウザで実行するための仕組みはいくつかあるようですが、どんな Java コードでも動くというものはありませんし、初学者の手に負えるものではありません。

コンソールアプリであれば、サーバ側で Java を実行してブラウザで入出力を行うのはそんなに難しくはなさそうです。が、初学者には厳しいです。

投稿2022/09/16 12:54

int32_t

総合スコア20914

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

htmlで実行

作られているものはGUIではなくCUIのようですし
あくまでjarをjavaコマンド叩いて実行する形式のものです。
HTML上での実行にはなりません。

いっそJava"Script"で作り直されては。
(それでもコンソールではなく、画面上のHTMLを操作するようにすべきですが)

ある程度Javaのソース流用できるとしてもJavaサーブレットへの切り替えでしょうね。
コンソール出力部分は全部HTMLへの画面出力に作り直しです。

投稿2022/09/16 12:52

編集2022/09/16 18:51
m.ts10806

総合スコア80852

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2022/09/16 18:52

低評価された方、理由のコメントを。 同じ人ですかね。嫌がらせ目的での低評価は利用規約により禁止されています。 実際にそれで凍結されたアカウントもあるので、ご注意を。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問