2016-05-14 4 views
2

私はJavaを使い始めましたが、これまでオンラインで問題を解決していましたが、プログラムの全機能を記述する必要はありませんが、すでに整理されたコード。戻り値を出力する

しかし、IntelliJ Ideaのコンパイルプログラムで自分のコードを整理しようとしています。メソッドの呼び出しを正しく記述する必要があります。 ここで私はつまらなくなっている:codingbat.comの例:

- 文字列を指定すると、最初の文字から始まる文字列が返され、 "Hello"は "Hlo"を返す。

私はオンラインソリューションを作ってみたが、今私は

...私は何かが欠けてるようなどのコンソールからスキャナ/ BufferedReaderの入力とルックス、mainメソッドで、アイデアでそれを実行したいです
import java.util.Scanner; 
public class Bat 
{ 
    public static void main (String[] args) { 
     Scanner scanner = new Scanner(System.in); 
     String str = scanner.nextLine(); 
     printString(); 
     } 

    public String stringBits(String str) { 
     String result = ""; 
     for (int i = 0; i<str.length();i += 2) { 
      result += str.substring(i, i+1); 
     } 
     return result; 
    } 
    public static void printString() { 
     System.out.println(result); 
    } 
} 

私はあなたの助けを借りて解決してください。それを作るために何をすればいいですか:

  1. コンソールから単語を読みます。
  2. 新しい文字列を作成します。
  3. 印刷してください。
+0

私は答えは質問に何をしているのか見当がつかないので、私は、オフトピックとして、この質問を閉じるために投票しています - それはなしになります今感覚。 –

+1

@ mohican93質問には答えを含めないでください。左上のチェックマークをクリックして、問題を解決した回答を受け入れてください。そうすれば、将来の読者は何をすべきかを知ることができます。 – luk2302

+0

エンジニア、簡単に、私はここの時間の最初のカップル、そして今それが編集されています。 誰もが、サポートと回答をいただきありがとうございます。議論されたトピックについてさらに多くのリンクを提供したい人は、私も感謝します。 – mohican93

答えて

2

つの選択肢:

  • stringBitsstatic
  • がクラスBatのインスタンスを作成し、メンバーの方法

最初のソリューションを呼び出す作る -

を変更することはあまりない、使いやすいです
import java.util.Scanner; 

public class Bat { 
    public static void main (String[] args) { 
     Scanner scanner = new Scanner(System.in); 
     String str = scanner.nextLine(); 
     printString(stringBits(str)); 
    } 

    public static String stringBits(String str) { 
     String result = ""; 
     for (int i = 0; i < str.length();i += 2) { 
      result += str.substring(i, i + 1); 
     } 
     return result; 
    } 

    public static void printString (String string) { 
     System.out.println(string); 
    } 
} 

第二の溶液 - もう少し進歩

import java.util.Scanner; 

public class Bat { 

    private String string; 

    public Bat(String string) { 
     this.string = string; 
    } 

    public static void main (String[] args) { 
     Scanner scanner = new Scanner(System.in); 
     String str = scanner.nextLine(); 

     Bat bat = new Bat(str); 
     bat.printStringBits(); 
    } 

    private String stringBits() { 
     String result = ""; 
     for (int i = 0; i < string.length(); i += 2) { 
      result += string.substring(i, i + 1); 
     } 
     return result; 
    } 

    public void printStringBits() { 
     System.out.println(stringBits()); 
    } 
} 
+0

luk! ありがとうございます!最初の解決策はコンパイラによって受け入れられましたが、 "result - > rsl"のように必要な結果は表示されませんでしたが、入力結果の単語をもう一度 "result-result"に印刷しました。 しかし、2人目はすごくうまくいきました。私はこれが好きです。 私はそれの各ステップを踏んで説明することを頼みたくないです。私はかなりうまくいきました。(str)をパラメータとして新しいBatインスタンスを作成する部分だけがまだ難解です。私はそれに関する情報へのリンク/ソースがあるかどうか尋ねたがっていますか?なぜ、どの場合など – mohican93

+0

@ mohican93本当にリンクのフォローアップはありません。あなたは何かのチュートリアルや講義を今行っていると思いますか?トピックとテクニックについては、おそらくそれで議論されるでしょう。それはプライベートメンバとそのパラメータの値を受け入れるコンストラクタを持つクラスです。 – luk2302

1

結果変数は、「stringBits」メソッド内からのみアクセスできます。メソッドが文字列を返すので、次のようにして印刷することができます。

System.out.println(stringBits(string)); //Call in main method in place of printString(); 

編集:私のコードは実際の例ではありません。 stringBitsは、動作させるには静的メソッドでなければならないことに注意してください。

+0

ありがとう、CConard96! 私はすでにそれを試しました。 stringBits()は静的でないフィールドからはアクセスできないと言われます。私はString stringBitsを静的にし、それは私が得るものです:stringBitsは()には適用できません。コードの 編集部: パブリック静的文字列stringBits(文字列str){ 文字列結果= "";(int i = 0; i mohican93

+1

オリジナルの質問を編集して、コメントに投稿する代わりにコードを追加してください。また、あなたが得ている問題は 'stringBits()'に引数を渡していないためです。 'stringBits(str)'を呼び出す必要があります。また、 'str'は現在' printString() 'にアクセスできないので、このメソッドに' str'を渡す必要もあります。 –

関連する問題