我正在为AP Computer Science做一项作业,其中包括生成一个listarray(在一定范围内),然后用html" target="_blank">方法处理它们,去除超过或小于程序前面确定的阈值的对象。这里是我编写的代码的一个例子,同时还有我的老师提供的前提条件。
/**
* @param orig is a List of Integer
* @param mid is an int > 2
* @return a new List of Integer that contains, in order, all the numbers in
* orig that are >= mid / 2
*/public static ArrayList<Integer> extractUpper(ArrayList<Integer> orig, int mid) {
ArrayList<Integer> myArray = new ArrayList<Integer>();
for(Integer a: orig) {
if (a >= mid/2)
myArray.add(a);
}
return myArray;
}
/**
* @param orig is a List of Integer
* @param mid is an int > 2
* @return none PostCondition: all numbers less than mid / 2 have been
* removed from orig
*/
public static void deleteUpper(ArrayList<Integer> orig, int mid) {
for(int j = 0; j < orig.size(); j++) {
if (orig.get(j) >= (mid/2))
orig.remove(j);
}
}
对我来说,这看起来应该工作得很好,但是当我运行这个:
ic static void main(String[] args) {
//a.
int listLen = 10;
int listMax = 20;
System.out.println("listLen equals " + listLen + " and listMax equals " + listMax);
System.out.println();
//b.
System.out.println("Generating a fixed-length ArrayList of length " + listLen + " with all values >= 0 and < " + listMax);
ArrayList<Integer> Array1 = Main.buildFixedList(listLen, listMax);
System.out.println(Array1);
//c.
System.out.print("The numbers in this ArrayList >= " + listMax/2 + " are: ");
ArrayList<Integer> Array2 = Main.extractUpper(Array1, listMax);
System.out.println(Array2);
//d.
System.out.print("After deleting numbers > " + listMax/2 + " the modified list is: ");
Main.deleteUpper(Array1, listMax);
System.out.println(Array1);
//e.
System.out.print("After deletion, the numbers in the List >= " + listMax/2 + " are: ");
ArrayList<Integer> Array3 = Main.extractUpper(Array1, listMax);
System.out.println(Array3);
//f.
System.out.println();
我的输出似乎忽略了某些数字,有些比其他的更频繁。
listLen equals 10 and listMax equals 20
Generating a fixed-length ArrayList of length 10 with all values >= 0 and < 20
[14, 16, 12, 9, 8, 11, 14, 16, 1]
The numbers in this ArrayList >= 10 are: [14, 16, 12, 11, 14, 16]
After deleting numbers > 10 the modified list is: [16, 9, 8, 14, 1]
After deletion, the numbers in the List >= 10 are: [16, 14]
>=10和<10方法偶尔也会起作用,但我认为现在它更像是一个废话。在这个特定的示例中,>=10方法起作用,但<10则无效。我不知道我的代码出了什么问题。
编辑:谢谢你所有的回复,我很感谢你的帮助。我已经编辑了extractUpper和deleteUpper方法,并且获得了更高的成功率,但是代码似乎忽略了一些数字。代码如下:
/**
* @param orig is a List of Integer
* @param mid is an int > 2
* @return a new List of Integer that contains, in order, all the numbers in
* orig that are >= mid / 2
*/public static ArrayList<Integer> extractUpper(ArrayList<Integer> orig, int mid) {
ArrayList<Integer> myArray = new ArrayList<Integer>();
for (int i = 0; i < orig.size(); i++){
if(orig.get(i) >= mid/2) {
myArray.add(orig.get(i));
}
}
return myArray;
}
/**
* @param orig is a List of Integer
* @param mid is an int > 2
* @return none PostCondition: all numbers less than mid / 2 have been
* removed from orig
*/
public static void deleteUpper(ArrayList<Integer> orig, int mid) {
for ( int i = orig.size()-1; i >= 0; i--){
if (i < orig.size()) {
if(orig.get(i) >= mid/2) {
orig.remove(i);
i++;
}
}
else
i--;
}
}
下面是直接来自程序的几个输出:
listLen equals 10 and listMax equals 20
Generating a fixed-length ArrayList of length 10 with all values >= 0 and < 20
[4, 15, 8, 11, 18, 16, 7, 3, 6]
The numbers in this ArrayList >= 10 are: [15, 11, 18, 16]
After deleting numbers > 10 the modified list is: [4, 8, 7, 3, 6]
After deletion, the numbers in the List >= 10 are: []
Generating a fixed-length ArrayList of length 10 with all values >= 0 and < 20
[6, 3, 9, 16, 4, 4, 17, 8, 4]
The numbers in this ArrayList >= 10 are: []
After deleting numbers > 10 the modified list is: [6, 3, 9, 4, 4, 8, 4]
After deletion, the numbers in the List >= 10 are: []
listLen equals 10 and listMax equals 20
Generating a fixed-length ArrayList of length 10 with all values >= 0 and < 20
[4, 5, 0, 4, 12, 12, 1, 12, 10]
The numbers in this ArrayList >= 10 are: [12, 12, 12, 10]
After deleting numbers > 10 the modified list is: [4, 5, 0, 4, 1, 12]
After deletion, the numbers in the List >= 10 are: [12]
Generating a fixed-length ArrayList of length 10 with all values >= 0 and < 20
[15, 16, 2, 8, 1, 7, 3, 0, 15]
The numbers in this ArrayList >= 10 are: [12]
After deleting numbers > 10 the modified list is: [2, 8, 1, 7, 3, 0]
After deletion, the numbers in the List >= 10 are: [12]
问题出在deleteuper
方法中。
当您从列表中删除一个项目时,该列表中的索引会发生变化--如果您删除项目3,那么以前在索引4处可访问的项目现在变成了编号3。
在您的实现中,您总是增加索引指针,不管删除是否发生。这意味着,如果连续两个项目符合删除标准,则只删除第一个项目。
Iterator<Integer> i = orig.iterator();
while (i.hasNext()) {
if (i.next() >= mid) {
i.remove();
}
}
for (int i=0; i<orig.size(); ) {
if (orig.get(i) >= mid) {
orig.remove(i);
}
else {
i++;
}
}
我试图实现菲尔·斯特金的Rest服务器,并学习如何使用api密钥进行身份验证。程序在获取和删除请求时运行良好,但在尝试发布和其他剩余方法时,它会抛出“未授权”响应。当我尝试使用摘要身份验证时(这里我使用chrome高级rest客户端进行测试),用户名和密码不匹配,浏览器总是显示登录表单 我使用默认的示例类包括在Rest服务器捆绑包
因此,对于我的完成暗示前缀:“ela”,我希望输出为“Hello elastic Search”。 我知道一个简单的解决方案是添加多字段输入,如下所示: 但是,如果这是解决方案,那么使用分析器有什么意义呢?分析器在完成暗示中有意义吗? 我的映射: 我的文档: 搜索请求: 提前谢了。 吉米
我制作了一个简单的程序,使用JavaFX和JDBC作为依赖项,我使用jpackage将其打包到一个可安装的文件中,没有任何困难,但当我尝试启动我的程序时,会出现以下错误: 附:该程序在IDE中运行良好,还带有CMD(运行“.jar”文件而不是安装的文件),这只是结果。给出该错误的exe文件。我试着编写相同的程序,但没有调用或使用mysql数据库,而且效果很好,所以我假设问题与依赖关系(即mysql
正如标题所示,我无法使用delete()选项。我在网上发了很多帖子,但都找不到正确的答案。我正在Homestead上使用Laravel5.5(一周前安装,最新版本左右)。 让我给你一些代码,我真的希望有人能帮助我。 这让我头痛,奥氮平快用完了。请告诉我我做错了什么,如果遗漏了什么,请告诉我! 这是我的控制器: 这是我的索引页(索引与后端的管理索引相同: 然后是路线: 然后政策: 最后是中间件: 在
到目前为止,我已经尝试了以下命令: 但每当我尝试使用以下命令查找MySQL时,我都会得到一个与MySQL相关的文件列表: 输出: 我现在该怎么办? 我试图找出是否有任何方法可以删除所有与MySQL相关的文件,然后重新安装MySQL。 我需要它来连接Qt。
我注意到我的机器人没有设置RichPresence,就像我今天看它一样。我最后一次检查它是在星期三,代码也在那里工作。所以我今天再次执行它,并且RichPresence没有像往常一样重新设置。现在我认为不和谐会改变它的界面。 现在,我在我的项目中使用了最新的JDA版本,并对代码进行了修改,使数据对象成为JSONObject,但它仍然无法工作。作为第二个,我试图使我的“Spielst”对象成为Ric