2017-02-14 3 views
0

私のプロジェクトでは、番号の行の文字列を表示しなければならないので、あとでその文字列を削除または追加することができます。私は文字列の長さに基づいて5秒でスケールを印刷する方法がわかりません。与えられた文字列に基づいて数字の行を表示する

例:

0 5 10 15 20 
|----+----|----+----|- 
This is the first line 

その後、ユーザーが位置から位置に使用して文字列から削除したい文字を選択します。ユーザーが文字列から選択した位置が表示され、削除されます。

例:

from position: 12 
to position: 18 

0 5 10 15 20 
|----+----|----+----|- 
This is the first line 
      ^^^^^^^ --> // this will be deleted 
y/n: y 
0 5 10 15 
|----+----|----+ 
This is the ine 

私は文字を削除することができましたが、私は、文字列に基づいて、数直線を表示する方法がわかりません。ここに私のコードは、これまでのところです:

public void showNumberLine(String line) 
    { 
     int lineCount = line.length(); // getting the length of the string being passed in 
     String numberLine = ""; 

     for(int i = 0; i <= lineCount; i++) // 
     { 

       numberLine = "" + i; 
       System.out.println("|----+----|----+----|-"); 

     } 
    } 

public void deleteSubString() 
    { 
     Scanner keyboard = new Scanner(System.in); 
     showNumberLine(textOfLine); // this will print out then number line and the line 

     System.out.print("from position: "); 
     int fromIndex = keyboard.nextInt(); 
     System.out.print("to position: "); 
     int toIndex = keyboard.nextInt(); 

     if(fromIndex < 0 || fromIndex > numOfChar || toIndex < 0 || toIndex > numOfChar) 
     { 
      System.out.println("Cannot delete at the given index: Index Out of Bounds"); 
     } 

     /* 
     * Create a new number line where it shows what is going to be deleted 
     */ 
     String newLineOfString = textOfLine.substring(fromIndex, toIndex); 
     textOfLine = textOfLine.replace(newLineOfString, ""); 
     System.out.println(newLineOfString); 

    } 
+4

ようこそスタックオーバーフロー!宿題の助けを求めているようです。それ自体に問題はありませんが、これらのことを守ってください(http://meta.stackoverflow.com/questions/334822/how-do-i-ask-and-answer-homework-questions/338845#338845)、それに応じて質問を編集してください。 (これは宿題でなくても、とにかくアドバイスを検討してください) –

答えて

1

私は法printScaleまたは引数としてStringまたはintを取り、あなたのために以下の2行を印刷したそのような何かを実装するために、あなたをお勧めします。

printScale(myNewString.length());

この方法は何かを見ることができる:あなたは値"This is the ine"Stringを持っているので、もしあなたがあなたの例で示したよう

あなたは悲しいあなたはすでにあなたはこのようなメソッドを呼び出すことができます文字を削除することができますこのように(完璧ではなく動作します):

public void printLine(int amountOfCharacters) { 
    StringBuilder lineNumber = new StringBuilder(); 
    StringBuilder lineScaleSymbols = new StringBuilder(); 
    for (int i = 0; i < amountOfCharacters; i++) { 
     if (i % 10 == 0) { 
      if (i < 10) { 
       lineNumber.append(i); 
      } else { 
       lineNumber.insert(i -1, i); 
      } 
      lineScaleSymbols.append('|'); 
     } else if (i % 5 == 0) { 
      if (i < 10) { 
       lineNumber.append(i); 
      } else { 
       lineNumber.insert(i -1, i); 
      } 
      lineScaleSymbols.append('+'); 
     } else { 
      lineNumber.append(' '); 
      lineScaleSymbols.append('-'); 
     } 
    } 

    System.out.println(lineNumber.toString()); 
    System.out.println(lineScaleSymbols.toString()); 
} 

+0

助けてくれてありがとう – bubbles2189

1

showNumberLineメソッドを使用すると正しい軌道に乗っています。あなたがする必要が正確に何

レッツ・概要:

  • が文字列
    • 0で終わるすべての文字と同じ長さの数直線を生成する文字列の長さを決定します特殊文字である|
    • 5で終わるすべての文字は、特殊文字+となります。

      for(int i = 0; i < line.length(); i++) { 
          if(i % 10 == 0) { 
           // the number is divisible by 10 (ends in zero) 
           System.out.print("|"); 
          } else if(i % 5 == 0 && i % 10 != 0) { 
           // the number is divisible by 5 and not divisible by 10 (ends in 5) 
           System.out.print("+"); 
          } else { 
           System.out.print("-"); 
          } 
          System.out.println(); 
      } 
      

      出力:

      |----+----|----+----|----+----|----+----|--- 
      The quick brown fox jumped over the lazy dog 
      
      他のすべての文字が-

あなたが書くためにどの文字かを決定するために剰余演算子を使用して、このようなあなたのループを作ることができるだろう

  • 数字を書き込むにはもっとコードが必要です(0、 5番、10番、15番)を番号の上に置いておきます。同様のロジックですが、数字の長さは1文字、その後は2文字、次に3文字(0、5、10、15、... 100,105)のように考慮する必要があります。数字はスペースに収まらないので、ある時点で停止する必要があります。

  • +0

    助けてくれてありがとう – bubbles2189

    関連する問題