編集:文字列内の文字を大文字にするためにindexOf位置を使用しようとしています
すべてのコードを1つのプログラムにコンパイルしようとしました。今必要なのは、メソッドから変更された文字列を返す方法を理解することだけです。これを達成するためには何を入れなければなりませんか?
public class String_Fixer {
public static void main(String[] args) {
String userInput, newString;
Scanner keyboard = new Scanner(System.in);
System.out.println("This program takes sentences and capitalizes them for you.");
System.out.println("Please write a few sentences.");
System.out.println("");
userInput = keyboard.nextLine();
System.out.println("");
System.out.println("Here is the original sentence:");
System.out.println(userInput);
System.out.println("");
System.out.println("And here is the modified sentence:");
System.out.println();
}
public static List<Integer> stringFixer(String userInput) {
List<Integer> indexes = new ArrayList<>();
int first = 0, offset = 2, index, offset_index;
while ((index = userInput.indexOf('.', first)) != -1) {
offset_index = index + offset;
if (offset_index < userInput.length()) {
indexes.add(offset_index);
}
first = index + 1;
}
while ((index = userInput.indexOf('?', first)) != -1) {
offset_index = index + offset;
if (offset_index < userInput.length()) {
indexes.add(offset_index);
}
first = index + 1;
}
return indexes;
}
public static String CapatilizeChars(List<Integer> indexes, String string) {
StringBuilder newString = new StringBuilder(string);
for (int i : indexes) {
char capChar = Character.toUpperCase(newString.charAt(i));
newString.setCharAt(i, capChar);
}
return newString.toString();
}
}
括弧内には指定したindexOf位置を置く必要がありますか? – Brandon
私はこれをやってみましたが、プログラムには範囲外のエラーがあります。 – Brandon
いいえ、このメソッドは文字を受け取り、大文字のバリアントを返します。だから、索引を見つけ、 'String.charAt(index);'を使って、変更したい文字の索引の文字を取得します。次に 'StringBuilder'を使用して文字列の文字を' YOUR_STRING_BUILDER.setCharAt(newChar、index); 'を使って新しい大文字に置き換えます; – Jdman1699