[解決済み】スレッド「main」での例外 java.lang.StringIndexOutOfBoundsException: 文字列のインデックスが範囲外です。0 [閉店]
2022-01-20 23:52:10
質問
私は、摂氏-華氏、またはその逆を変換する小さなコンソールプログラムを作りたいと思っています。
import java.util.Scanner;
public class CelsiusFahrenheit {
private static Scanner s;
public static void main(String[] args) {
s = new Scanner(System.in);
char reponse = 'N', choixConvert;
do
{
do
{
System.out.println("Choisie le mode de converstion : ");
System.out.println("1 - Converstisseur Celesuis - Fahrenheit");
System.out.println("2 - Converstisseur Fahrenheit - Celesuis");
do
{
System.out.print("Votre Choix: ");
choixConvert = s.next().charAt(0);
if(choixConvert != '1' && choixConvert != '2')
System.out.println("Mode inconnu, veuillez réitérer votre choix.");
}
while(choixConvert!='1' && choixConvert!='2');
System.out.print("Température à convertir : ");
double temp = s.nextDouble();
System.out.print("Resultat est: " + ConvertCelesuisFahrenheit(choixConvert,temp));
System.out.println("\nSouhaitez-vous convertir une autre température ? (O/N)");
reponse = Character.toUpperCase(s.nextLine().charAt(0));
}while(reponse != 'O' && reponse != 'N');
}while(reponse == 'O');
System.out.println("Au revoir !");
}
private static Double ConvertCelesuisFahrenheit(int choixConvert,double temp )
{
if(choixConvert == 1)
return (9/5)*temp+32;
else
return (temp-32)*(5/9);
}
}
が、ConvertCelesuisFahrenheit()関数が常に0.0を返してしまい、その後このエラーが発生する問題がありました。
スレッド "main" java.lang.StringIndexOutOfBoundsException で例外が発生しました。 文字列のインデックスが範囲外です。0 at java.lang.String.charAt(Unknown ソース) at CelsiusFahrenheit.main(CelsiusFahrenheit.java:33)
これが出力です。
Choisie le mode de converstion :
1 - Converstisseur Celesuis - Fahrenheit
2 - Converstisseur Fahrenheit - Celesuis
Votre Choix: 2
Température à convertir : 33
Resultat est: 0.0
Souhaitez-vous convertir une autre température ? (O/N)
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 0
at java.lang.String.charAt(Unknown Source)
at CelsiusFahrenheit.main(CelsiusFahrenheit.java:33)
解決方法は?
nextDouble()
は入力ストリームに改行を残すので、その後
nextLine().charAt(0)
の結果
nextLine()
は空文字列です。ストリームから改行を削除するか,あるいは
next()
は、上記と同様です。
関連
-
[解決済み】Android Studio クラス org.codehaus.groovy.runtime.InvokerHelper を初期化できませんでした。
-
[解決済み】javaで指定されたファイルが見つからない
-
[解決済み】StringUtils.isBlank() vs String.isEmpty()
-
[解決済み】スレッド「main」での例外 java.lang.StringIndexOutOfBoundsException: 文字列のインデックスが範囲外です。0 [閉店]
-
[解決済み】メソッド本体がない、またはJavaで抽象的な宣言をする
-
[解決済み】Javaの".class expected "について
-
[解決済み】接続Java - MySQL : 公開鍵の取得は許可されていません。
-
[解決済み] スレッド "main" での例外 java.lang.StringIndexOutOfBoundsException: 文字列のインデックスが範囲外です。11
-
[解決済み] 現在のスレッドがメインスレッドでないことを確認する方法
-
[解決済み】メインスレッドで他のスレッドからコードを実行する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】HTTPステータス 405 - リクエストメソッド「POST」はサポートされていません (Spring MVC)
-
[解決済み] hibernateでResultSetを抽出できない。
-
[解決済み】 java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver [重複]。
-
[解決済み] メソッドがスーパータイプのメソッドをオーバーライドまたは実装していない - Overrideの場合
-
[解決済み】Javaの部分文字列:「文字列のインデックスが範囲外」。
-
[解決済み】非閉鎖文字リテラルエラー
-
[解決済み] メソッドがそのスーパークラスのメソッドをオーバーライドしない
-
[解決済み】JLabelのテキストを中央に配置するには?
-
[解決済み】keytoolエラー 鍵屋が改ざんされたか、パスワードが不正確だった場合
-
[解決済み】Javaを包含するクラスではないのか?