Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中,在循环中获取字符输入(使用Scanner)的正确方法是什么?_Java_Java.util.scanner - Fatal编程技术网

在Java中,在循环中获取字符输入(使用Scanner)的正确方法是什么?

在Java中,在循环中获取字符输入(使用Scanner)的正确方法是什么?,java,java.util.scanner,Java,Java.util.scanner,我试图做一个简单的计算器程序,用户可以选择做一个操作,输入数字,只要他/她愿意 我只是遇到了这个问题,因为每当我进入我的循环并询问用户是否想继续时,每当我运行程序时,我都会遇到一个“线程中的异常”main“java.lang.NullPointerException” 扫描仪myInput=新扫描仪(System.in) 请允许我谦虚地问一下,我可以对这个程序做些什么,这样它会再次询问用户的输入是否继续?提前感谢您的帮助。在这个地方,最好的方法是使用do while do{ System.out

我试图做一个简单的计算器程序,用户可以选择做一个操作,输入数字,只要他/她愿意

我只是遇到了这个问题,因为每当我进入我的循环并询问用户是否想继续时,每当我运行程序时,我都会遇到一个“线程中的异常”main“java.lang.NullPointerException”

扫描仪myInput=新扫描仪(System.in)


请允许我谦虚地问一下,我可以对这个程序做些什么,这样它会再次询问用户的输入是否继续?提前感谢您的帮助。

在这个地方,最好的方法是使用do while

do{
System.out.print("Do you have numbers to compute?");
ans=myInput.findInLine(".").charAt(0);
//
//
//

}while ((ans=='Y')||(ans=='y'));
这将持续询问,直到用户的回答为“Y”或“Y”

我希望你能处理其他事情

用于使用while循环

System.out.print("Do you have numbers to compute?");
char ans=myInput.findInLine(".").charAt(0);

while((ans=='Y')||(ans=='y')){
//
//
//
System.out.print("Do you have numbers to compute?");
ans=myInput.findInLine(".").charAt(0);
}

在这个地方,最好的方法就是边做边做

do{
System.out.print("Do you have numbers to compute?");
ans=myInput.findInLine(".").charAt(0);
//
//
//

}while ((ans=='Y')||(ans=='y'));
这将持续询问,直到用户的回答为“Y”或“Y”

我希望你能处理其他事情

用于使用while循环

System.out.print("Do you have numbers to compute?");
char ans=myInput.findInLine(".").charAt(0);

while((ans=='Y')||(ans=='y')){
//
//
//
System.out.print("Do you have numbers to compute?");
ans=myInput.findInLine(".").charAt(0);
}

NullPointerException
将作为
Scanner抛出。如果找不到请求的字符串/模式,FindLine()
可以返回null。代码对空字符串调用方法
charAt(0)
。将代码更改为以下将解决此问题:

Scanner myInput=new Scanner(System.in);
char ans;

System.out.print("Do you have numbers to compute?");
ans=myInput.findInLine(".").charAt(0);

while ((ans=='Y')||(ans=='y'))
{
    // Code omitted

    System.out.print("Compute another?");
    myInput.nextLine();
    String s = myInput.findInLine(".");
    ans = (null == s) ? 'n' : s.charAt(0);
}

NullPointerException
将作为
Scanner抛出。如果找不到请求的字符串/模式,FindLine()
可以返回null。代码对空字符串调用方法
charAt(0)
。将代码更改为以下将解决此问题:

Scanner myInput=new Scanner(System.in);
char ans;

System.out.print("Do you have numbers to compute?");
ans=myInput.findInLine(".").charAt(0);

while ((ans=='Y')||(ans=='y'))
{
    // Code omitted

    System.out.print("Compute another?");
    myInput.nextLine();
    String s = myInput.findInLine(".");
    ans = (null == s) ? 'n' : s.charAt(0);
}

最好尝试发布一些代码,即使格式不好,这样我们就可以知道如何最好地帮助您。如果是家庭作业,请也添加家庭作业标记。你好,都铎,我可以在这篇文章中插入代码。好的,现在在代码的哪一行中得到NullPointerException?在out.println(“计算另一个?”)之后;如果找不到字符串,PartFindLine()是否返回null?(只是一个猜测)您是否尝试过在调试器中调试代码?最好尝试发布一些代码,甚至是格式不好的代码,以便我们知道如何最好地帮助您。如果是家庭作业,请也添加家庭作业标记。你好,都铎,我可以在这篇文章中插入代码。好的,现在在代码的哪一行中得到NullPointerException?在out.println(“计算另一个?”)之后;如果找不到字符串,PartFindLine()是否返回null?(只是猜测)您是否尝试在调试器中调试代码?在这种情况下,即使我有一条语句询问用户是否需要进行任何计算,也不可能使用while循环吗?是的,您可以使用。。为此,您应该在开始循环之前问一次问题,然后在结束循环之前更新代码。在这种情况下,即使我有一条语句询问用户是否需要进行任何计算,也不可能使用while循环吗?是的,您可以使用。。为此,您应该在开始循环之前问一次问题,然后在结束循环之前更新代码。