
正文
java执行代码大全 java代码执行编译的命令是
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
java中怎么执行字符串中的代码
在javascript中eval()可以实现字符串转代码,java中需要使用动态编译。
把获得的字符串写入一个临时文件中,然后编译它,在调用其中的函数。
我们把要转换的字符串构造一个完整的类:如果方法是有返回值的.则:
public object eval(string str){
//生成java文件
string s = "class temp{";
s += "object rt(){"
s += "myclass mc = new myclass();"
s += " return mc."+str+"();";
s += "}"
s +="}";
file f = new file("temp.java");
printwriter pw = new printwriter(new filewriter(f));
pw.println(s);
pw.close();
//动态编译
com.sun.tools.javac.main javac = new com.sun.tools.javac.main();
string[] cpargs = new string[] {"-d", "所在目录","temp.java"};
int status = javac.compile(cpargs);
if(status!=0){
system.out.println("没有成功编译源文件!");
return null;
}
//调用temp的rt方法返回结果:
myclassloader mc = new myclassloader();
class clasz = mc.loadclass("test.class",true);
method rt = clasz.getmethod("rt", new class[]{ string[].class });
return rt.invoke(null, new object[] { new string[0] });
//如果方法没有返回就直接调用
}
我们可以先写好多个重载的eval,有返回值和没有返回值的.以及可以传递参数的.
这样我们就可以用字符串转换为java的语句来执行.
相关问答
Q1: java编程题,求java高手,可执行代码
//Teacher.java
public class Teacher {
//4个String类型java执行代码大全的私有字段Name、TeacherID、Address、Course
private String Name;
private String TeacherID;
private String Address;
private String Course;
public String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}
public String getTeacherID() {
return TeacherID;
}
public void setTeacherID(String teacherID) {
TeacherID = teacherID;
}
public String getAddress() {
return Address;
}
public void setAddress(String address) {
Address = address;
}
public String getCourse() {
return Course;
}
public void setCourse(String course) {
Course = course;
}
//查询老师授课课程的方法queryCourse
public String queryCourse(String qryString){
if(qryString.equals(TeacherID)){
return Course;
}
return "";
}
}
//Test.java
public class Test {
public static void main(String[] args) {
Teacher t = new Teacher();
//设置该对象中的4个私有字段分别为java执行代码大全:TeacherID=”001”、Name=”Peter”、Address=”Beijing”、Course=”OS”
t.setTeacherID("001");
t.setName("Peter");
t.setAddress("Beijing");
t.setCourse("OS");
String qryString = "001";
//显示“Teacherjava执行代码大全:此处为对象的Namejava执行代码大全,Course:此处为对象的课程”
System.out.println("Teacher:"+t.getName()+",Course:"+t.queryCourse(qryString));
}
}
Q2: 我的世界java指令大全
以下是Minecraft通用指令:
clear:清除玩家java执行代码大全的物品
clone:复制或移动某区域内的方块
deop:撤销玩家的管理员身份
difficulty:调整游戏难度
effect:给予实体状态效果
enchant:对实体手持物品进行附魔
execute:在改变执行者、执行位置和角度java执行代码大全,添加限制条件,并储存其输出值的情况下执行另一条命令
experience/xp:更改玩家的经验和等级
fill:在指定区域填充指定方块
function:执行函数
gamemode:修改游戏模式
gamerule:查看和修改游戏规则
give:给予玩家指定物品
help/?:列出可用指令、查看特定指令用法
kick:将玩家踢出服务器
kill:移除或杀死实体
list:列出在服务器中的玩家
locate:定位特定结构
me:以“* 执行者名称+动作”的格式发送一条旁白信息
op:给予玩家管理员身份
particle:显示粒子
playsound:播放音效
reload:重新加载数据包
say:通过聊天框向玩家发送消息
schedule:在经过指定的时间后执行函数
scoreboard:管理和查看记分板的目标、玩家和队伍
setblock:放置指定方块
setworldspawn:设置世界出生点
spawnpoint:设置特定玩家的重生点
spreadplayers:散步玩家
stopsound:停止音效
summon:生成实体
tag:管理实体的记分板标签
tell/msg/w:通过聊天框向玩家发送私聊信息
tellraw:向玩家发送JSON文本消息
time:设置时间
title:设置和显示标题
teleport/tp:传送实体
weather:设置天气
whitelist:管理服务器中的白名单
以下是java版特有指令:
advancement:使特定玩家达成进度
attribute:管理实体属性
ban:将玩家列入黑名单
ban-ip:将一个ip地址列入黑名单
banlist:显示黑名单
bossbar:管理boss栏
data:查看或修改方块或实体的nbt数据
datapack:管理数据包
debug:开始或结束调试会话
defaultgamemode:设置默认游戏模式
forceload:强制加载区块
item:修改方块或实体物品栏内的物品
jfr:使用Java FlightRecorder分析数据和某些自定义事件
locatebiome:定位生物群系
loot:将指定的战利品放入物品栏或世界
pardon:将玩家移出黑名单
pardon-ip:将一个ip地址移出黑名单
perf:记录并保存性能分析数据
placefeature[新增:JE 1.18.2]:放置一个地物,目前不可用
publish:向局域网开放单人游戏世界
recipe:给予或剥夺玩家配方
save-all:将服务器保存至硬盘
save-off:禁用服务器的自动保存
save-on:启用服务器的自动保存
seed:输出世界种子
setidletimeout:设置踢出空闲不动玩家的时间
spectate:使处于旁观者模式的玩家进入另一个实体的视角
stop:停止服务端
team:管理队伍
teammsg:给使用命令的实体所在的队伍全体成员发送消息
trigger:修改一个准则为“触发器”的记分板目标
worldborder:控制世界边界
Q3: JAVA一段代码的执行
结果为-1
因为B继承A,所以B和A都有变量x,因为x是静态的,所以如果B中的x值发生变化,A中的x也会发生变化,因为x是同一个。而C中有自己的变量x,覆盖了A中的x,所以不会影响到A中的x值。
B初始化时,先初始化它的父类也就是A类,A类初始化时先初始化静态变量x,此后便不用再初始化。在主函数中b.x=-1,所以改变了对象A和对象B共有的静态变量x的值,所以对象a中的x也变为-1.
Q4: 求Java代码
使用循环结构,通过Scanner类从控制台输入每个人的捐款金额,并累加每个人的捐款金额,计算捐款总数和捐款人数,如果捐款总数达到10万元,则计算平均每人捐款金额。
下面是通过输入进行统计,实际过程中还能是通过数据库进行操作,或者表格收集数据进行导入关系数据库进行统计。还可以通过接入微信或者支付宝小程序收款实时统计。
已经有人给过随机数示例,这里给出前端输入的示例:
import java.util.Scanner;
public class CharityDonation { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int num = 0; // 捐款人数
int total = 0; // 募捐总数
int avg = 0; // 平均每人捐款金额
int donation; // 每个人的捐款金额
while (total 100000 num 1000) {
System.out.print("请输入第" + (num + 1) + "个人的捐款金额:");
donation = scanner.nextInt();
total += donation;
num++;
} if (total = 100000) {
avg = total / num;
System.out.println("捐款总数已达到10万元,捐款人数为" + num + ",平均每人捐款金额为" + avg + "元。");
} else {
System.out.println("征集慈善募捐失败,募捐总数未达到10万元。");
}
scanner.close();
}
}
java执行代码大全的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java代码执行编译的命令是、java执行代码大全的信息别忘了在本站进行查找喔。






