Java質問!HELP ME!!!

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

Javaについて質問です HELP ME!!!

Javaの質問です 4月から受講していますが、 Javaがまったくわかりません。。。 すでに後悔しています。。。 課題が出ていて解けません。 助けてください!!! コンパイルして実行した時。 文字を入力するとそのまま反映できるプログラムを作りたいのですが、 その際にprivateで宣言しセッタ ゲッタと、 try finallyを組込むという条件を含んで式を作らないといけません。 自分で作ってみたのですが、コンパイルしてもエラーが出ます。 噛み砕いた説明や補足をわかりやすい表現で いただけるとうれしいですが、 コメントなしでも結構です。 (先生が教え方がうまくないと言うか、質疑応答の時間をくれなくて、 また何をどう質問したらよいのかわからないので、ただただ授業が進んで行っている状態。) コンパイルして実行さえできればいいのです。 正しいプログラムを書き出してください。 よろしくお願いします。 ____________________________________________ class SgStdInTest{ private String input; public void setInput(String input){ this.input = input ; } public String getInput(){ return input; } } class StdInTestMain{ } import java.util.Input; Account acc = new Account(); 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(); } } }

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

  • ベストアンサー
回答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

  • 答えを教えてください

    javaの課題でわからないことがあるので質問します。 2つ目のファイルに書かれているSgStdInTestを、 1つ目のファイルのどこかに入れてコンパイルして 動かせるようにしたいのですが、どうすればいいですか? よろしくおねがいします。 ______1つ目(ファイル名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つ目(ファイル名SgStdInTest.java)______ class SgStdInTest{ private String input; public void setInput(String input){ this.input = input ; } public String getInput(){ return input; } }

  • javaについて

    以下のようにキーボードから入力していくプログラムを試行しているのですが、エラーが出てくるので行き詰まっています。 理想的にはキーボードに”あいう”エンター”えおか”エンターと打ち込んだら str[0]=あいう str[1]=えおか と表示させていきたいのですが、よろしくお願いします。 import java.io.*; import java.lang.*; import java.net.*; import java.awt.*; class gugu2 { public static void main(String[] args) throws IOException { int i=0; while(i<2){ System.out.println("キーワード入力"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String input = br.readLine(); char str[] = input.toCharArray(); System.out.println("キーワードは" + str[]); i=i+1; } for(i=0;i<2;i++){ System.out.println(str[]); } } } これがエラー表示です。 gugu2.java:17: '.class' がありません。 System.out.println("キーワードは" + str[]); ^ gugu2.java:21: '.class' がありません。 System.out.println(str[]); ^ エラー 2 個

    • ベストアンサー
    • Java
  • java練習

    import java.util.Scanner; class test { public static void main (String[ ] args) throws IOException { System.out.println("文章を入力してください。"); BufferedReader input = new BufferedReader (new InputStreamReader (System.in)); String str = input.readLine( ); if (str == A) { str ="10"; } else if (str == 64) { str ="100"; } else if (str == 3E8) { str ="1000"; } else if (str == FF) { str ="255"; } else if (str == 100) { str ="256"; } System.out.println(" str + "); } } 今プログラミングの練習で文字や数字を判別するプログラムを作っています。 とりあえず16進数を入力したら10進数に変換されるプログラムを書いてたんですけどコンパイルしたらどうしてもエラーが出てきてしまいます。 調べてもよくわかりません、助けてください。

  • 今勉強中のjavaで。わからないことがあります。

    import java.io.*; class Ireru { public static void main(String args[]) throws IOException{ System.out.println("あなたは何歳ですか?"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str1 = br.readLine(); int num =Integer.parseInt(str1); System.out.println("あなたは" + num +"歳です。"); } } ------------------------------- import java.io.*; class Ireru { public static void main(String args[]) throws IOException{ System.out.println("あなたは何歳ですか?"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str1 = br.readLine(); System.out.println("あなたは" + str1 +"歳です。"); } } なぜ下では悪いのですか?なぜnum をつかないといけないかがわかりません。正確には str1とnumの違いがわからなくて困っています。何が混乱の原因ですか?

    • ベストアンサー
    • Java
  • NTEmacsでJavaのコンパイルをしたいです

    NTEmacsのシェルです。 Javaの勉強をつい最近始めました。JDKは入っていて、普段はjavac、javaは普通に動くのですが、import java.io.*;のようなことをすると、(パーケージを読みこませる等)その部分でエラーになってしまいます。 ただ、eclipseで同様のものを作ると、コンパイルはうまくいきます。 例 import java.io.*; class Sample4{ public static void main(String[] args) throws Exception { System.out.println("please imput something"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); System.out.println(str); } } 結果 c:\Users\***\Documents\Java>javac no_3.java javac no_3.java no_3.java:33: エラー: class、interfaceまたはenumがありません import java.io.*; ^ エラー1個

    • ベストアンサー
    • Java
  • javaについて質問させてください

    入力していった数を足していく式を作りたいんですが、どのような式にしたらいいのでしょうか? ググってみたのですが、どうも難しく、説明の理解もできませんでした。。 import java.io.*;public class Input6{ public static void main(String args[]) throws IOException{ int i; String s1,s2; BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); while( ↑ここまではできたのですが、ここから先が全くできません><(合ってるかどうかもわかりません><) 実行結果として >java ry 合計 100 現在の合計100 900 現在の合計1000 みたいな感じのを作りたのですが、どなたか式を教えてもらえませんか>< ヒントでもいいのでよろしくお願いします><

  • 下記のようなjavaのプログラムで、* や / を入力しても,

    下記のようなjavaのプログラムで、* や / を入力しても, 必ず判定がfalseのほうになるんですけど、どうすれば良いですか? あまりjavaには詳しくないので、分かりやすく教えていただければ幸いです。お願いします。 import java.io.*; public class test{ public static void main(String[] args) throws IOException{ BufferedReader input = new BufferedReader(new InputStreamReader(System.in)); String a; a = input.readLine(); if((a == "*") ^ (a == "/")){ System.out.println("OK"); }else{ System.out.println("エラー"); } } }

    • ベストアンサー
    • Java
  • コマンドライン引数

    『やさしいJava』で勉強してます。 import java.io.*; class Sam3 { public static void main(String args[]) { if(args.length != 1){ System.out.println("ファイル名が違うよ。"); System.exit(0); } try{ BufferedReader br= new BufferedReader(new FileReader(args[0])); String str; while((str = br.readLine()) != null){ System.out.println(str); } br.close(); }catch(IOException e){ System.out.println("エラー"); } } } で、コンパイルして、 Sam3 test2.txt と実行しても 「準備ができていません。読み取り中・・・」 としかでません。 なにか間違いがあるのでしょうか? お願いします。

    • ベストアンサー
    • Java
  • ArrayListを使ったクラスの作成の仕方

    次のプログラム、どこが間違っているのでしょうか? コンパイルは通るのですが、実行しようとすると ずら~っとエラーが出てしまいます。 (例)at java.lang.ClassLoader.defineClass1(Native Method) at java.security.SecureClassLader.defineClass..... at java.net.URLClassLoader.defineClass(URLClassLoader.java:260) ********************************************************** package siryou; import java.util.ArrayList; import java.io.*; class Info { private String name; private String age; private String nationality; public void setName(String nm) { name = nm; } public void setAge(String a) { age = a; } public void setNationality(String nt) { nationality = nt; } public void show(String j) { System.out.println("「名前=" + name + "」"); System.out.println("「年齢=" + age + "」"); System.out.println("「国籍=" + nationality + "」"); } } class Kojinjyoho02 { public static void main(String args[])throws IOException { System.out.println("何回入力しますか?"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); int res = Integer.parseInt(str); Info in = new Info(); ArrayList list = new ArrayList(); for(int i =0; i < res; i++){ System.out.println("名前は?"); str = br.readLine(); in.setName(str); System.out.println("年齢は?"); str = br.readLine(); in.setAge(str); System.out.println("国籍は?"); str = br.readLine(); in.setNationality(str); list.add(in); } for(int j=0; j < list.size(); j++){ String jyoho = (String)list.get(j); in.show(jyoho); } } }

    • ベストアンサー
    • Java
  • Java int sum = 0は必要ですか?

    やさしいJavaという本を買ったのですが、良くわからない箇所がありました。 --------------省略----------------- class Sample6 { public static void main(String[] args) throws IOException { System.out.println("整数を3つ入力してください。") ; BufferedReader br = new BufferedReader(new InputStreamReader(System.in)) ; String str1 = br.readLine() ; String str2 = br.readLine() ; String str3 = br.readLine() ; int sum = 0 ; sum += Integer.parseInt(str1) ; -------------------略----------------- int sum = 0 ; とありますが、0と設定しておく必要はありますか? 無いとまずいですか? いきなりこのコードが出てきたと思うのですが どこかに書いてましたっけ?

    • ベストアンサー
    • Java