程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了BufferedReader 无限循环大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决BufferedReader 无限循环?

开发过程中遇到BufferedReader 无限循环的问题如何解决?下面主要结合日常开发的经验,给出你关于BufferedReader 无限循环的解决方法建议,希望对你解决BufferedReader 无限循环有所启发或帮助;

我收到一个无限循环错误,但我不知道如何结束循环。

int a,b,c;
String line;
     
BufferedReader  br  =  new  BufferedReader(new  inputStreamReader(system.in));
 
while((line=br.readline())!=null);    
{
    System.out.println("Enter the two numbers to add:");
    a=Integer.parseInt(linE);
    b=Integer.parseInt(linE);
    c = a+b;
    System.out.println("Sum of two numbers:"+ c);
}  

解决方法

您需要从while循环的末尾删除;,因为现在您的代码就像

没有主体的while循环

while((line=br.readLine())!=null);    

和代码块

{
    System.out.println("Enter the two numbers to add:");
    a=Integer.parseInt(linE);
    b=Integer.parseInt(linE);
    c = a+b;
    System.out.println("Sum of two numbers:"+ c);
}

所以代码将永远停留在 while 循环中,只读取行

注意:如果像 10 20 这样的行需要先将其拆分为 2 个字符串,然后获取变量中的每个整数,则 a 和 b 会将同一行转换为 int

String[] number = line.split(" ");
a=Integer.parseInt(numbers[0]);
b=Integer.parseInt(numbers[1]);

或者你可以使用 ScAnner 逐个整数读取整数

ScAnner scAnner = new ScAnner(System.in);
while (scAnner.hasNext()) {
    int a = scAnner.nexTint();
    int b = scAnner.nexTint();
    int c = a+b;
    System.out.println("Sum of two numbers:"+ c);
}
,
package stackoverflow;

import java.io.bufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class InfLoop {

    public static void main(final String[] args) throws IOException {
        example1();
        example2();
    }

    private static void example1() {
        try (InputStreamReader isr = new InputStreamReader(System.in);
                BufferedReader br = new BufferedReader(isr);) {

            while (true) {
                final String line1 = br.readLine();
                if (line1 == null) {
                    System.out.println("First number not entered! AborTing...");
                    break;
                }

                final String line2 = br.readLine();
                if (line2 == null) {
                    System.out.println("Second number not entered! AborTing...");
                    break;
                }

                final int number1 = Integer.parseInt(line1);
                final int number2 = Integer.parseInt(line2);
                final int c = number1 + number2;
                System.out.println("Result of '" + number1 + "'+'" + number2 + "'='" + c + "'");
            }

        } catch (final Exception E) {
            e.printStackTrace();
        }
    }

    private static void example2() throws IOException {
        try (InputStreamReader isr = new InputStreamReader(System.in);
                BufferedReader br = new BufferedReader(isr);) {

            while (true) {
                final Integer number1 = readInteger(br,"Enter first number: ");
                if (number1 == null) {
                    System.out.println("First number is invalid! AborTing...");
                    break;
                }

                final Integer number2 = readInteger(br,"Enter second number: ");
                final String line2 = br.readLine();
                if (line2 == null) {
                    System.out.println("Second number is invalid! AborTing...");
                    break;
                }

                final int c = number1.intValue() + number2.intValue();
                System.out.println("Sum of '" + number1 + "'+'" + number2 + "'='" + c + "'");
            }
        }
    }

    private static Integer readInteger(final BufferedReader pBr,final String pmessagE) {
        if (pmessage != null) System.out.println(pmessagE);
        try {
            final String line = pBr.readLine();
            if (line == null) return null;

            return Integer.valueOf(linE);

        } catch (final Exception E) {
            return null;
        }
    }
}
/*
 * 1) indentation was off,use IDE that does formatTing for you
 * 2) use try/resource(/catch/finally)
 * 3) you need to read 2 separate li@R_197_11335@,else a and b are the same
 * 4) start using Helper methods (readInteger),save you lots of duplicate code
 * 5) there's two different ways of error handling here: handle inside the method (example1),or throw (example2),*    whatever is more useful for the calling code
 * 6) usually handling errors (instead of throwing them) should only be done if it is a direct requirement to the method!
 */

/updatE: 在 readInteger() 中将 IOException 更改为 Exception

,

尝试这样的事情:

public static void main(String[] args) throws Exception {
    int a,b,c;
    String line;

    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    do {
        System.out.println("Enter the two numbers to add:");
        if ((line = br.readLine()) != null && !line.isBlank()) {
            String[] input = line.split(" ");
            a = Integer.parseInt(input[0]);
            b = Integer.parseInt(input[1]);
            c = a + b;
            System.out.println("Sum of two numbers:" + c);
        } else {
            break;
        }
    } while (true);
}

输出:

Enter the two numbers to add:
4 5
Sum of two numbers:9
Enter the two numbers to add:

大佬总结

以上是大佬教程为你收集整理的BufferedReader 无限循环全部内容,希望文章能够帮你解决BufferedReader 无限循环所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:无限循环