[解決済み] スレッド "main" で例外発生 java.lang.StringIndexOutOfBoundsException: 文字列のインデックスが範囲外です。0 [クローズ]
2022-02-10 08:44:21
質問
私は、摂氏-華氏、またはその逆を変換する小さなコンソールプログラムを作りたいと思っています。
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()
は、上記と同様です。
関連
-
[解決済み] java.sql.SQLException: ユーザー 'root'@'localhost' (using password: YES) のためのアクセスが拒否されました。
-
[解決済み】"実引数リストと形式引数リストの長さが異なる"
-
[解決済み】代入の左手は必ず変数 CharAt
-
[解決済み】ResultSetの例外 - 結果セットの開始前
-
[解決済み】指定された子にはすでに親がいます。先に子の親に対してremoveView()を呼び出す必要がある(Android)
-
[解決済み] メソッドがスーパータイプのメソッドをオーバーライドまたは実装していない - Overrideの場合
-
[解決済み】デフォルトのキーストアファイルが存在しない?
-
[解決済み] スレッド "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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】エラー。Selection does not contain a main type
-
[解決済み】不正なエスケープ文字"㊧"について
-
[解決済み】不正な反射的アクセスとは?
-
[解決済み] 二項演算子「&」のオペランド型がおかしい java
-
[解決済み】Java JDK - doubleからintへの非可逆変換の可能性
-
[解決済み】java.io.IOException: 壊れたパイプ
-
[解決済み] JavaでSSLピアが正しくシャットダウンされない
-
[解決済み】intがnullであるかどうかを確認する方法
-
[解決済み] エラー - trustAnchors パラメータは空であってはなりません。
-
[解決済み】 executeQuery()でデータ操作文が発行できない。)