import html" target="_blank">java.util.ArrayList;
import java.util.Scanner;
import java.util.Collections;
public class JMUnit2Ch10
{
public static void main(String[] args)
{
ArrayList<Integer> randomNumbers = new ArrayList<>();
System.out.print("How many random numbers between 1 and 100:");
Scanner stdIn = new Scanner(System.in);
int numOfNumbers = stdIn.nextInt();
for(int i=0; i<numOfNumbers; i++)
{
randomNumbers.add((int)(Math.random()*100)+1);
}
System.out.print("Which random number are your searching for?:");
int searchNumber = stdIn.nextInt();
System.out.printf("%n");
for(int a: randomNumbers)
{
System.out.println("Unsorted List");
System.out.println(searchNumber + " found at location: "+ randomNumbers.indexOf(searchNumber));
}
Collections.sort(randomNumbers);
for(int b:randomNumbers)
{
System.out.println("Sorted List");
System.out.println(searchNumber + " found at location: "+ randomNumbers.indexOf(searchNumber));
}
System.out.println(randomNumbers.stream().mapToInt(value -> value).sum());
}
}
我尝试使用布尔值来仅显示是否找到我使用的代码:
boolean found = false;
然后在两个打印语句中,我输入:
found=true;
并在底部放置:
if(!found)
{
System.out.println(randomNumbers.stream().mapToInt(value -> value).sum());
}
并且仍然在为每个循环的每一次迭代获取输出。我试图做的是在ArrayList
中的每一次获得一个输出,该数字出现在已排序和未排序的ArrayList
中,然后是数组列表中所有数字的总和。
编辑1:我得到的当前输出是searchNumber
,它表示有多少个数字,因此它输出的是
x
是numOfNumbers。我希望它只输出它在两个数组中出现的次数。编辑2:由于建议我不要使用图片,我希望它显示:1到100之间有多少个随机数:1000您要搜索哪个随机数?:5.
未排序的列表5在位置:502找到5在位置:725找到5在位置:856找到5在位置:924找到
排序列表 5 在位置找到: 40 在位置找到 5 在位置找到: 41 在位置找到 5 在位置找到: 42 5 在位置找到: 43
所有号码的总数:49089
我得到的是未排序列表 5 在位置 502 X1000 找到 排序列表 5 在位置 41 X1000 找到
所有数字的总和:42013
匿名用户
我想你的问题就在这里:
int searchNumber = stdIn.nextInt();
for(int a: randomNumbers)
{
System.out.println("Unsorted List");
System.out.println(searchNumber + " found at location: "+ randomNumbers.indexOf(searchNumber));
}
Collections.sort(randomNumbers);
for(int b:randomNumbers)
{
System.out.println("Sorted List");
System.out.println(searchNumber + " found at location: "+ randomNumbers.indexOf(searchNumber));
}
您正在searchNumber
中读取一个数字,但从未使用它与randomNumbers
中的数字进行比较,您正在打印数组中的每个数字。
因此,在两个 for-each
循环中,您可以:
if (searchNumber == a) {
System.out.println(searchNumber + " found at location: "+ randomNumbers.indexOf(a));
}
< code>b变量也是如此。
我还将放置:System.out。println(“未分类列表”)
循环之前。。。
因此,它应该看起来像:
System.out.println("Unsorted List");
for (int a : randomNumbers) {
if (searchNumber == a) {
System.out.println(searchNumber + " found at location: "+ randomNumbers.indexOf(a));
}
}
Collections.sort(randomNumbers);
System.out.println("Sorted List");
for (int b : randomNumbers) {
if (searchNumber == b) {
System.out.println(searchNumber + " found at location: "+ randomNumbers.indexOf(b));
}
}
感谢@ChrisWitteveen指出这一点:
这里的一个问题是随机数索引的(a)和随机数索引的(b)总是返回相同的数字。
在这种情况下,您可以使用一个简单的for
循环来简化代码,而不是为每个one使用
将上述建议改为:
System.out.println("Unsorted List");
randomNumbers = new ArrayList<>(randomNumbers);
for (int i = 0; i < randomNumbers.size(); i++) {
if (searchNumber == randomNumbers.get(i)) {
System.out.println(searchNumber + " found at location: " + i);
}
}
Collections.sort(randomNumbers);
System.out.println("Sorted List");
for (int i = 0; i < randomNumbers.size(); i++) {
if (searchNumber == randomNumbers.get(i)) {
System.out.println(searchNumber + " found at location: " + i);
}
}
例如,为了测试目的,我尝试将随机生成从1-100更改为1-10,然后得到以下输出,我还打印了整个数字列表,仅用于调试目的:
How many random numbers between 1 and 100:20
2
9
2
6
10
5
6
6
7
6
9
9
3
7
9
5
10
3
6
8
Which random number are your searching for?:2
Unsorted List
2 found at location: 0
2 found at location: 2
Sorted List
2 found at location: 0
2 found at location: 1
128
我要做的是在ArrayList中的每一次都获得一个输出,该数字出现在已排序和未排序的ArrayList中,然后是数组列表中所有数字的总和。
只需添加 if 条件,如下所示:
for(int a: randomNumbers)
{
System.out.println("Unsorted List");
if(a == searchNumber)
{
System.out.println(searchNumber +
" found at location: "+ randomNumbers.indexOf(searchNumber));
}
}
您需要添加一个条件来检查当前数字(a或b)是否等于search chNumber
。但是,当找到一个事件时,您现在尝试打印randomNumbers.indexOf(search chNumber)
。这将为每个事件返回相同的数字,即第一个事件的索引。唯一的方法是使用for(int i=0; i
此外,我会将“未排序列表”和“排序列表”放在循环上方,以便这些行仅打印一次。
如果使用
for(int i=0;i
System.out.println("Unsorted List");
for (int i = 0; i < randomNumbers.size(); i++) {
if (randomNumbers.get(i) == searchNumber) {
System.out.println(searchNumber + " found at location: " + i);
}
}
Collections.sort(randomNumbers);
System.out.println("Sorted List");
for (int i = 0; i < randomNumbers.size(); i++) {
if (randomNumbers.get(i) == searchNumber) {
System.out.println(searchNumber + " found at location: " + i);
}
}
或者如果您想使用计数器:
int loc = 0;
System.out.println("Unsorted List");
for(int a : randomNumbers) {
if (searchNumber == a) {
System.out.println(searchNumber + " found at location: "+ loc);
}
loc++;
}
Collections.sort(randomNumbers);
loc = 0;
System.out.println("Sorted List");
for(int b : randomNumbers) {
if (searchNumber == b) {
System.out.println(searchNumber + " found at location: " + loc);
}
loc++;
}
我有一个返回: 然后另一个用户这样使用它: 如何处理任何迭代中的失败情况? 我知道我可以使用,在这种情况下,错误结果将被忽略: 的迭代器根据成功状态具有0或1项,如果为0,将过滤掉它。 但是,我不想忽略错误,而是想让整个代码块停止并返回一个新错误(基于映射中出现的错误,或者只是转发现有错误)。 在Rust中如何最好地处理此问题?
问题内容: 我将通过jsoup连接到一个url并获取它的所有内容,但问题是,如果我选择喜欢, 它返回一个元素,但是我想获取页面中的所有元素,例如,一个一个地迭代它们, 如果我选择使用body,我会在一行中得到结果,例如, 相反,我想选择所有元素并逐个迭代并产生如下结果: 使用jsoup可以吗? 谢谢, 卡尔提克 问题答案: 您可以使用选择器选择文档的所有元素,然后使用分别获取每个元素的文本。
问题内容: 如果我创建两个列表并将其压缩 然后我将z输入到两个列表中 那么,l1的内容就很好了[(1,7),(2,8),(3,9)],但是l2的内容只是[]。 我猜想这是python关于可迭代项的一般行为。但是,作为从C家族迁移的新手程序员,这对我来说没有意义。为什么会这样表现?有办法解决这个问题吗? 我的意思是,是的,在这个特定示例中,我可以将l1复制到l2中,但是总的来说,在迭代一次之后,是否
问题内容: 我有一个像这样的ArrayList对象: 如何遍历列表?我想在TextView中显示值,该值来自ArrayList对象的数据。 问题答案: 最简单的方法是遍历的所有s ,然后遍历的所有键:
类似于同步 方式的Iterator,这里有很多不同的方法可以迭代和处理一个Stream中的值。有组合器样式的方法,例如map,filter和fold和他们的有错误就早退的表弟try_map,try_filter和try_fold。 不幸,for循环不适用于Streams,但对于命令式代码,while let和next/try_next函数可以这样用: async fn sum_with_next(
在我的应用程序中,我需要数组1的给定大小k的所有子集。。n 这可以使用递归方法轻松完成,并存储沿途找到的所有子集。然而,我不希望我的应用程序使用指数级的内存量[O(n^k)]。 因此,我想编写一个实现(Java)的类来迭代所述子集。 所以我可以如下使用它: 显然,我们需要存储最后返回的当前子集,它被初始化为1... k。但是如何从这个当前子集计算下一个子集呢?