

キーボートから入力してファイルに保管するのはできたのですが、十文字以上、入力がない場合に条件がうまく処理できません。以下作成したプログラム。  
どのような内容を追加したうまく動くでしょうか。

[code]

    import java.io.BufferedReader;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.nio.charset.StandardCharsets;
    
    public class Main4 {
    
        public static void main4(String[] args)  throws IOException{
    
            System.out.println("キーボードから10文字以内で入力してください");
    
            InputStreamReader isr = new InputStreamReader(System.in);
            BufferedReader br = new BufferedReader(isr);
    
            String str = null;
            try {
                str = br.readLine();
                br.close();
            } catch (IOException e) {
               e.printStackTrace();
            }
    
            FileOutputStream fos = new FileOutputStream("C:/Users/Desktop/java.txt");{
    
            byte sbyte[] = str.getBytes(StandardCharsets.UTF_8);
            fos.write(sbyte);
    
                //ファイルに書き込む
                fos.flush();
    
                //ファイルをクローズする
                fos.close();
    
            System.out.println("入力された文字は「" + str + "」です");
    
        }
    
        }
    }
    
[/code]


CC BY-SA 4.0
2020-04-15T13:05:45.600
65651
2023-06-02T23:02:50.313
2020-04-15T13:35:35.070
32986
34781
question
java
キーボードから入力した値をファイルに保存する。十文字を超える場合や入力値がない場合はファイルを閉じる。


[`String#length()`](https://docs.oracle.com/javase/jp/11/docs/api/java.base/java/lang/String.html#length\(\))の戻り値を文字列の長さとみなしてよいかと思います。

今回、ユーザが入力した文字列は変数 `str` に入っているので、 `str.length()` の戻り値を見て条件分岐することになります。

[code]

    // 入力した文字列の長さ
    int length = str.length();
    
    if (0 < length && length <= 10) {
        // 0文字より多く10文字以下の場合
    
        // 既に実装している「キーボードから入力した値をファイルに保存する」処理
    
    } else {
        // 十文字を超えるか入力値がない場合
    
        //ファイルをクローズする
        fos.close();
    
        System.out.println("十文字を超えるか入力値がない場合");
    }
    
[/code]


CC BY-SA 4.0
2020-04-16T00:09:46.837
65658
2020-04-16T00:09:46.837
2808
65651
answer