当前位置: 首页 > 面试题库 >

在Java中,在此程序中,它突然停止在某个代码点正确运行?但是可以编译吗?任何想法可能是什么问题?

须新
2023-03-14
问题内容
import java.io.IOException;
import java.util.*;

 public class task2 {
public static void main (String [] args) throws IOException {
    int a;
    int b;
    String y;
    String x;
    Scanner input = new Scanner(System.in);

    System.out.println("Please enter number A:");
    a = input.nextInt();

    System.out.println("\nPlease enter number B:");
    b = input.nextInt();

    System.out.println("\nLastly, enter A if you wish it to be the dividor and/or subtractor, or if you wish it to be B, please enter B :");             //stops running properly here...
    y=input.nextLine();

    System.out.println("\nWhat would you like to do? Multiply (*), Divide (/), Subtract (-) or  Add   (+)? Please enter the symbol of which process you would like to have completed:");
    x=input.nextLine();


    if (y=="b"+"B") {

    if (x=="*") {
    System.out.println("\nThe product of these numbers is:" + a*b);}
    else 
    if (x=="/") {
    System.out.println("\nThe quotient of these numbers is:" + a/b);}
    else 
    if (x=="+") {
    System.out.println("\nThe sum of these numbers is:" + a+b);}
    else 
    if (x=="-") {
    System.out.println("\nThe difference of these numbers is:" + (a-b));}}

    else 
    if (y=="a"+"A"){

    if (x=="*") {
    System.out.println("\nThe product of these numbers is:" + b*a);}
    else 
    if (x=="/") {
    System.out.println("\nThe quotient of these numbers is:" + b/a);}
    else 
    if (x=="+") {
    System.out.println("\nThe sum of these numbers is:" + b+a);}
    else 
    if (x=="-") {
    System.out.println("\nThe difference of these numbers is:" + (b-a));}}
}
}

我不知道为什么它会停止,但是在“
//”指示的地方程序突然停止让我输入信息,并且没有继续我想要它执行的过程。我不会花太多时间来解释该程序,因为我认为从代码本身来看,我想做什么很明显。感谢您提供的所有帮助!


问题答案:

input.next();

input.nextLine();

由于nextLine()跳过输入并将扫描器设置为NEXT行,并返回跳过内容的字符串表示形式。您的程序抛出错误,因为NEXT行不存在



 类似资料:
  • 我的构建服务器安装了Open JDK 8,我的正式服安装了oracle JRE 8。是否有可能在开放的JDK中编译代码并在Oracle JRE 8中部署工件?

  • 问题内容: 我怀疑异常可能会使TimerTask停止运行,在这种情况下,我很可能需要第二个timetask来监视第一个仍在运行? 更新资料 感谢您的回答。我继承了此代码,因此有点无知… 我刚刚看到,如果我在工作中抛出未捕获的异常,TimerThread将永远停止运行。 的运行方法表明,如果引发异常,则计划的线程将永远不会再次运行。 stacktrace的结尾将是: 因此,临时解决方案是抓住一切…长

  • 问题内容: 注意:这是从Comparable和Comparator合约衍生出来的,涉及null 该代码可以在Eclipse(20090920-1017)中编译并正常运行 但是它不能在上编译javac 1.6.0_17。这是错误消息: 有人可以解释为什么差异吗?这是一个错误吗?如果是这样,谁有错误? 问题答案: 这是一个已确认的错误:错误ID 6468354。这是相关的摘录: 此问题是由以下事实引起

  • Java8引入了重要的新语言特性,如lambda表达式。 语言中的这些变化是否伴随着编译字节码中的重大变化,从而阻止它在不使用某些反向翻译器的情况下在Java7虚拟机上运行?

  • 问题内容: 命令可以运行已编译的Scala代码吗?如果是这样,我们为什么要使用排他命令? 问题答案: 如果您在类路径中包含了Scala的所有必要运行时库(scala-library.jar,scala-swing.jar …),则可以运行Scala生成的字节代码。scala命令自动执行此操作,并支持特定于Scala的命令行参数。

  • 问题内容: Java 8引入了重要的新语言功能,例如lambda表达式。 语言的这些变化是否伴随着已编译字节码的重大变化,从而阻止了它在Java 7虚拟机上运行而无需使用某些逆向转换程序? 问题答案: 不可以,在源代码中使用1.8功能要求你以1.8 VM为目标。我刚刚尝试了新的Java 8版本,并尝试使用进行编译,但编译器拒绝了: