我不知道在Java中是否可行; 我想从用户(从System.in)获得输入,然后使用该输入引发编译错误。 我的意思是,如果用户输入了文本" HELLO",则程序应引发编译错误:编译错误:HELLO。 我想要一个错误,该错误实际上使程序在该点处停止执行该消息。

这可能吗? 如果是,如何?

实际上,我想在运行时犯一个编译错误!

代码将如下所示:

public class Main {

public static void main(String[] args) {

Scanner in = new Scanner(System.in);

String str = in.nextLine();

//compileError(str); this part must be completed

}

}

这可能吗?

您的意思是运行时错误(异常)? ...由于编译器生成语法错误

您想编写自己的编译器吗?

不。我认为这实际上是不可能的,但我不我想要一个确切的编译错误,而不是运行时错误或Exception。

想要一些不可能得到的东西会导致沮丧和其他。也许您的问题是变相的XY问题,您应该告诉我们您问题背后的动机,而不是您试图解决这一问题的不可能方法。

@aquestion认为您得到的程序不知道应该做什么,并且通过了在线法官的一些测试。您知道输入的内容可能是什么,但不知道输入顺序是什么,因此您应该在不实际访问在线法官测试用例的情况下获得测试用例。我想让我的程序给我一些错误,以找出每个测试用例中的内容。

@HovercraftFullOfEels参见上面的评论。我想获得无法访问的在线法官测试案例。但是我有一个可以通过所有测试用例的程序。我什至不确定问题到底是什么。我只有一个工作程序,想从在线裁判中提取输入。关键是,如果我犯了编译错误,那么在线法官会说出我犯了什么错误,但是却没有说明运行时错误。

只需创建一个名为CompileError的异常并将其抛出:p

以后的输入不会导致编译时间错误!

您指的是异常,不是编译错误。编译错误是指代码的语法中有错误,并且Java编译器无法为您的程序生成字节代码以使JVM执行该错误。这样就可以在运行程序之前发生。

因此,当使用"HELLO"作为输入时,可以在Java中使用RuntimeException或其任何子类的实例来终止程序,如果输入为"HELLO",则会在此示例代码中抛出InputMismatchException ,此异常是RuntimeException的子类或未经检查的异常,不需要程序员添加throws子句或显式处理它:

public static void main(String[] args) {

Scanner in = new Scanner(System.in);

String str = in.nextLine();

if("HELLO".equals(str)){

throw new InputMismatchException("This input is not allowed");

}

}

如果您打算打印一条消息并退出程序,则可以执行以下操作

...

System.err.println("Your input has resulted in an error, program will terminate");

/* You can change the above text with whatever you want */

System.exit(1);

或者,您总是可以抛出Exception对象(或从其派生的类的对象),并且当气泡冒泡时,不要在程序中的任何位置捕获它,程序将终止。

/* add throws Exception in your main method */

throw new Exception("Your input has resulted in an error, program will terminate")

但是,尚不清楚为什么您会特别希望抛出Compile错误。编译程序时,编译器会抛出编译时错误。在执行期间,您既不会期望它们,也不会尝试将它们扔掉。

您可以在此时停止程序执行。例如:

public class Main {

public static void main(String[] args) {

Scanner in = new Scanner(System.in);

String str = in.nextLine();

if (str.equals("HELLO")) {

System.out.println("Compile Error:" + str);

System.exit(1);

}

// Do something else.

}

}

另一种方法是抛出一个异常...,除了您将获得异常堆栈跟踪以及一条消息。在您执行此操作的情况下,可能没有关系。

请注意,这存在一些潜在的问题:

如果法官拦截所有输出,则可能无法掌握应用程序生成的消息。

法官每次做出判断时,可能会向您的应用程序提供不同的输入。

但是,这不是真正的编译错误。确实,对于您的程序来说,生成真正的编译错误没有任何意义。

编译错误发生在编译代码时,由编译器输出。但是Java应用程序在编译时无法读取输入(来自用户或"法官")。它可以在运行时读取输入...但是对于编译错误来说为时已晚。

您似乎对术语感到困惑。我建议您阅读这些文章,以了解各种术语的含义:

编译错误或编译器错误-https://en.wikipedia.org/wiki/Compilation_error

运行时错误-https://techterms.com/definition/runtime_error

例外-https://techterms.com/definition/exception

您对此发表了评论:

Think that you are given a program that you don't know what it should do and it pass some tests on an online judge. You know what the input could be but don't know in which order they come and you should get the test cases without actually accessing the online judge's test cases. I want to make my program give me some errors to find out what is in each test case.

I just have a working program and want to extract the input from online judge.

那不是您在谈论的编译错误。那是一个运行时错误,因为您希望/需要在程序运行时发生它。请参考上面的链接以获取这些术语的解释。

您的代码正在执行时,您不能引发编译错误。我认为您的意思是运行时错误,导致您的代码在运行时失败。

尝试这样的事情:

如果将代码包含在try / catch子句中,则也可以捕获此"错误"。

try {

// get the input

throw new RuntimeException(str);

} catch (RuntimeException ex) {

// ex contains the error details

// ex.getMessage() will give you the user's input

}

RuntimeException是运行时错误的最一般的例外,您可以使用其他例外,例外列表。

java强制编译通过_强制java使用用户输入作为消息进行编译错误相关推荐

  1. java项目----教务管理系统_基于Java的教务管理系统

    java项目----教务管理系统_基于Java的教务管理系统 2022-04-22 18:18·java基础 最近为客户开发了一套学校用教务管理系统,主要实现学生.课程.老师.选课等相关的信息化管理功 ...

  2. java五子棋游戏设计_基于Java的五子棋游戏的设计

    摘  要 五子棋作为一个棋类竞技运动,在民间十分流行,为了熟悉五子棋规则及技巧,以及研究简单的人工智能,决定用JAVA开发五子棋游戏.主要完成了人机对战和玩家之间联网对战2个功能.网络连接部分为Soc ...

  3. java反编译工具_漫话:如何给女朋友解释什么是编译与反编译

    戳蓝字"CSDN云计算"关注我们哦! 来源 | 漫话编程 某天下班后,我在家里进行电话面试,问到面试者这样一个问题:"你知道使用哪些办法可以反编译Java代码吗?&quo ...

  4. java语言 编译原理_【Java学习】深入分析Java的编译原理

    在<Java代码的编译与反编译>中,有过关于Java语言的编译和反编译的介绍.我们可以通过javac命令将Java程序的源代码编译成Java字节码,即我们常说的class文件.这是我们通常 ...

  5. java原生的编译软件_原生态Java 程序员容易忽视的编程细节

    Java是Java程序设计语言和Java平台的总称,要想学好一门语言,打好基础最关键的,学习一种新的编程语言比学习新的口头语言要容易得多.然而,在这两种学习过程中,都要付出额外的努力去学习不带口音地说 ...

  6. java编译环境_搭建java编译环境

    搭建java编译环境 一.java编译环境 1.准备工作: 下载 jdk-7u79-linux-x64.tar.gz 压缩包 解压 tar zxf jdk-7u79-linux-x64.tar.gz ...

  7. java的基本结构_【Java基础】基本程序设计结构

    摘自<Java核心技术 卷一> 希望能有自己的理解融入书中,融会贯通. 1.数据类型 1.1.JAVA中的基本类型 1.1.1.基本类型及其占用字节.默认值 注释:8bit = 1byte ...

  8. java打印星型_初识java java入门知识 基础知识 打印各种星型图形 源代码

    今天给大家带来的是初级Java基础部分的知识:包括初识Java.变量.常量.数据类型.运算符.各种选择结构.循环结构.数组等Java的基础语法部分!最后还有****循环结构的进阶****,步骤超详细, ...

  9. Java的泛型特性_学习Java的重中之重!

    Java的"泛型"特性,你以为自己会了 使用Java的小伙伴,对于Java的一些高级特性一定再熟悉不过了,例如集合.反射.泛型.注解等等,这些可以说我们在平时开发中是经常使用到的, ...

最新文章

  1. java经典50题_JAVA经典算法50题(3)【面试+工作】
  2. asp用于取代什么技术_ASP是不是已经被淘汰了?
  3. Jeesite信息化快速开发平台
  4. Django从理论到实战(part43)--HttpResponse对象
  5. 代理模式和动态代理模式_代理模式介绍
  6. html设置按钮样式变为椭圆,css border-radius圆形变为椭圆形,位置:绝对
  7. python如何复制oracle数据_Python使用cx_Oracle模块将oracle中数据导出到csv文件的方法...
  8. 宣布降低Windows Azure 存储和计算的价格
  9. 人工智能AI、机器学习和深度学习的区别
  10. Python 数据结构与算法——选择排序(迭代版、递归版)
  11. 易语言解析html实例,易语言解析JSON教程
  12. 如何将自己做的网页发布到网站让别人可以看到
  13. 判断两个平面向量之间夹角是顺时针还是逆时针
  14. DUN连接完成后,pc与手机进行LCP协商
  15. 计算机专业的实验器材,【计算机专业论文】系统观下的计算机专业实验平台建设(共3640字)...
  16. Encountered an improper argumen错误
  17. xp系统 与ipad 连接服务器,iPad与WindowsXP之间的数据传输
  18. win10下安装office2019
  19. RapidXml使用(备忘)
  20. 计算机教师的名言是,关于教师的名言

热门文章

  1. AppCode下的cs类 取得相关路径
  2. H5直播系列四 RTMP HTTP-FLV HLS MPEG-DASH
  3. librdkafka介绍文档与配置参数
  4. ICE简单介绍及使用示例
  5. Ice笔记--C++线程与并发(二)
  6. C语言写CGI程序【转】
  7. 数字图像处理实验(9):PROJECT 04-05,Correlation in the Frequency Domain
  8. ButterKnife与RxBinding中文件重复问题解决
  9. Python itertools模块
  10. ssdb主从及双主模型配置和简单管理