• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Javaについて質問です HELP ME!!!)

Java質問!HELP ME!!!

このQ&Aのポイント
  • 4月から受講しているが、Javaがまったくわからない。
  • コンパイルして実行した時に文字を入力するとそのまま反映できるプログラムを作りたい。
  • 私が作ったプログラムはコンパイルエラーが出てしまう。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.7

さっきの補足です。「統一」というのはよくわからない言い回しですが、たぶんあなたの先生は、1つのクラスを1つのファイルにしなさいという指示だったのだと思います。これは、Javaでは一般的に行われることです。 「(str)がどうのこうの…」については、SgStdInTest を使っていなかったので、そのことを指摘しているのだと思います。 というわけで、さっき提示した方法の3番目、2つのファイルに分ける方法で作成して提出してください。これでダメだという先生はいないはずですが、ダメ出しされた場合は、どの部分がだめなのか、もう一度よく聞いてください。

multiringo
質問者

お礼

ていねいな解説をありがとうございました。 2つに分けたほうのプログラムを提出しました☆ とても優しく教えてくださったのでベストアンサーにしたいと思います。

その他の回答 (6)

回答No.6

1つのクラスにするんですか? setter と getter を作った意味はなくなりますが、勉強レベルならあるのかなあ。それに、よく見たら、SgStdInTest の方はまったく使っていないですね。Eclipse にコピー&ペースとしてあなたのソースを修正したので、気づきませんでした。 なるべく初学者が作ったような下手なソースにしてみました。参考にしてください。ついでに、setter と getter を main メソッドの中で使うように修正しました。このソースなら setter と getter は本来必要ありません(かなり不自然なソースです)。あと、finally がなかったので追加しました。 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class SgStdInTest { private static String input; public static String getInput() { return input; } public static void setInput(String input) { SgStdInTest.input = input; } public static void main(String[] args) { try { System.out.print("Input : "); BufferedReader r = new BufferedReader( new InputStreamReader(System.in)); String str = r.readLine(); setInput(str); System.out.println("Your Input : " + getInput()); } catch (IOException e) { e.printStackTrace(); } finally { System.out.println("END"); } } } <ソースの解説> static メソッドである main メソッドの中で setter と getter を使えるようにしたため、String input を static メンバに変更しました(当然、setter と getter も static メソッドになります)。このようにしないとコンパイルできません。 String input を static メンバに変更しない方法としては、コンストラクタを作成する方法があります。これも初学者が作ったような下手なソースにしてあります。 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class SgStdInTest { private String input; public String getInput() { return input; } public void setInput(String input) { this.input = input; } public SgStdInTest() { try { System.out.print("Input : "); BufferedReader r = new BufferedReader( new InputStreamReader(System.in)); String str = r.readLine(); setInput(str); System.out.println("Your Input : " + getInput()); } catch (IOException e) { e.printStackTrace(); } finally { System.out.println("END"); } } public static void main(String[] args) { SgStdInTest test = new SgStdInTest(); } } それから、念のため不自然でないソースも載せておきます。クラスごとに別ファイルにしてください。これも初学者が作ったみたいなソースなので安心して使ってください。 <SgStdInTest.java> public class SgStdInTest { private String input; public String getInput() { return input; } public void setInput(String input) { this.input = input; } } <StdInTestMain.java> import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class StdInTestMain { private SgStdInTest test; public StdInTestMain() { test = new SgStdInTest(); try { System.out.print("Input : "); BufferedReader r = new BufferedReader( new InputStreamReader(System.in)); String str = r.readLine(); test.setInput(str); System.out.println("Your Input : " + test.getInput()); } catch (IOException e) { e.printStackTrace(); } finally { System.out.println("END"); } } public static void main(String[] args) { StdInTestMain main = new StdInTestMain(); } } 最後に、 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; の3行を以下のように変更すると、初学者がエディタで作ったような感じがいっそう出ます。 import java.io.*; もっとも、すでに上の3行を書いたソースを見せた後ならわざわざ変更するのも変ですが。

multiringo
質問者

補足

丁寧なアドバイスをありがとうございます。 _______________________________ 課題の条件が 任意のプログラムを作成する。 ただし、以下に挙げる条件を満たすこと。 1、複数のクラスを使用すること。クラスではセッタ、ゲッタを使用する。 2、try~catch文による例外処理を行うこと。 3、アクセス修飾子としてprivate、publicを使用すること。 _______________________________ なので、Set Get Try catch は必須だと思います。

回答No.5

ANo.2の者です。どうやら補足が足りなかったようです。以下のいずれかにしてください。 <<1つのファイルにする場合>> import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; class SgStdInTest{ private String input; public void setInput(String input){ this.input = input ; } public String getInput(){ return input; } } class StdInTest { public static void main(String args[]){ try{ System.out.print("Input : "); BufferedReader r = new BufferedReader( new InputStreamReader(System.in)); String str = r.readLine(); System.out.println("Your Input : " + str); }catch(IOException e) { e.printStackTrace(); } } } 上記の場合はSgStdInTest.javaというファイル名にしてください。class StdInTestの先頭にあったpublicを取ります。 <<2つのファイルにする場合>> SgStdInTest.javaの内容は以下の通り。 class SgStdInTest{ private String input; public void setInput(String input){ this.input = input ; } public String getInput(){ return input; } } 上記の場合はclass SgStdInTestの前にpubilcを付けてもよい。 --------------------------------------------- StdInTest.javaは以下の通りになります。 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class StdInTest { public static void main(String args[]){ try{ System.out.print("Input : "); BufferedReader r = new BufferedReader( new InputStreamReader(System.in)); String str = r.readLine(); System.out.println("Your Input : " + str); }catch(IOException e) { e.printStackTrace(); } } } コンパイルするときは2つのファイル名を指定してコンパイルしてください。

multiringo
質問者

補足

ありがとうございます。 お返事が来なかったので、うれしいです。 提出が昨日で、以下のプログラムを提出したのですが、 先生から待ったがかかりました。 クラス名をSgStdInTestにしているにもかかわらず、 このクラス名がpublic class以降で出てこないから、統一しなさいといわれたのですが、 どこを修正すればいいのかわかりません。 SgStdInTestを省いてまとまりを付けるには、どうすればいいでしょうか? 先生は「(str)がどうのこうの…」とおっしゃってました。 ファイル名は StdInTest.javaです。 よろしくお願いします。 __________________________________ //このファイルは、コンパイルして実行の際に文字を入力すると、Your Input以降に //自分が入力した文字が反映されるというプログラムです。 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; class SgStdInTest{ private String input; public void setInput(String input){ this.input = input ; } public String getInput(){ return input; } } public class StdInTest { public static void main(String args[]){ try{ System.out.print("Input : "); BufferedReader r = new BufferedReader( new InputStreamReader(System.in)); String str = r.readLine(); System.out.println("Your Input : " + str); }catch(IOException e) { e.printStackTrace(); } } }

  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.4

> importと記されている文3行 3行?どこからわいたの? まあ、恐らく import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; のことだと思うけど > 一番上もしくは下に持っていったのですが まずはJavaの構文を勉強しなおしなさい > エラーでました。 Accountの行を消してないんじゃないの?

multiringo
質問者

補足

>3行?どこからわいたの? >まあ、恐らく >import java.io.BufferedReader; >import java.io.IOException; >import java.io.InputStreamReader; >のことだと思うけど そのとおりです。 ま;最悪誰も教えてくれなかったら、 下記の状態で提出しますわ。 ____________________________ class SgStdInTest{ private String input; public void setInput(String input){ this.input = input ; } public String getInput(){ return input; } } import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class StdInTest { public static void main(String args[]){ try{ System.out.print("Input : "); BufferedReader r = new BufferedReader( new InputStreamReader(System.in)); String str = r.readLine(); System.out.println("Your Input : " + str); }catch(IOException e) { e.printStackTrace(); } } } ________________________________________________________________________

  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.3

> class、interface、または enumがありません。 ここで躓くって言うのは つまりあなたはJavaのソースファイルの記述ルールすら分かっていないってことよ。 HINT:import文の位置

multiringo
質問者

補足

ありがとうございます。 はい。全然わかっていないし、何がなんだかわかっていません。 importと記されている文3行をまとめて一番上もしくは下に持っていったのですが、エラーでました。

回答No.2

とりあえず、下記のコードでOK。コマンドプロンプトで文字を入力すると、入力した文字が表示されます。 class SgStdInTest{ private String input; public void setInput(String input){ this.input = input ; } public String getInput(){ return input; } } import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class StdInTest { public static void main(String args[]){ try{ System.out.print("Input : "); BufferedReader r = new BufferedReader( new InputStreamReader(System.in)); String str = r.readLine(); System.out.println("Your Input : " + str); }catch(IOException e) { e.printStackTrace(); } } } それから、 >import java.util.Input; Javaにはjava.util.Inputは存在しないので、インポートできません。 >Account acc = new Account(); 何に使うのか知りませんが、Javaではクラス内部に記述しなければいけないし、Accountクラスを定義しなければいけません。 それ以外の部分は、ソースは必要なクラスがインポートされていないので、コンパイルできなかったのでしょう。

multiringo
質問者

補足

ありがとうございます。 コンパイルしてみたのですが、 class、interface、または enumがありません。 と、エラーが出ました。

  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.1

4月からってことは まだ1ヶ月経っていないのね 今まで何時間学習してきたのか分からないけど 今なら0からもう一度勉強しなおすべきね。 ここで回答を言うのは簡単だけど このままでは今後も毎回質問することになるわよ。 お説教はおいといて Account acc = new Account(); この行何がしたいの?

multiringo
質問者

補足

Account acc = new Account(); は、 コンパイルで実行できるかと思って ただテキストを見てプログラムの中に入れてみただけです。 特に意味はありません。

関連するQ&A