【发布时间】:2021-11-19 21:24:54
【问题描述】:
在这里学习java的新程序员!我试图计算一个循环需要多少步才能停止考虑用户输入的内容。请记住,学校里有些人设置了限制sigh,您只能在堆栈中使用某些方法。这些方法是 push、pop 和 peek。
输入:
- 第一个输入是添加了多少元素。
- 第二个输入是您要添加的图书列表。
- 第三个输入是您希望循环何时停止。
我想在它停止时存储键索引,例如输入是:
4
Operating System
Algorithm and Data Structures
Web Programming
Computer Network
Web Programming
如果最后一个输入是 Web 编程,那么根据 Stack 的思想,预期的索引应该是 1,因为在使用堆栈时你总是 peek() 或看到你输入的最后一个元素。 pop() 也会发生同样的情况,您会在其中删除堆栈的最后一个元素。
这就是我得到的:
public class Solution {
public static void main(String[] args) {
//methods should only use push, pop, peek
Scanner in = new Scanner(System.in);
Stack<String> books = new Stack<>();
//n first
int n = in.nextInt();
in.nextLine();
//n second
for (int i = 0; i < n; i++) {
books.push(in.nextLine());
}
//n third
String str = in.nextLine();
int index = 0;
for (int i = 0; i < n; i++) {
//insert solution here
}
System.out.println(index);
}
}
这是我目前的解决方案:
for (int i = 0; i < n; i++) {
if (books.peek().contains(str)){
break;
}
books.pop();
index++;
}
到目前为止,我一直在研究一个解决方案并进行暴力破解,但它不是在索引中断时返回索引的值,而是返回 n 的值或堆栈的大小。
另一个使用我的解决方案的例子,当这些是输入时:
4
Operating System
Algorithm and Data Structures
Web Programming
Computer Network
Computer Network
输出应该是:
0
但我得到了:
4
这可能意味着“books.peek().contains(str)”的条件实际上并没有正确地打破循环。
非常感谢任何形式的帮助!
【问题讨论】:
-
由于英语不是我的第一语言而且我有点缺乏编程方面的知识,所以我对标题的内容也很困惑
-
索引比大小小一,因为它从零开始。
-
我不这么认为,因为使用我的解决方案,输出为 5,除非输入是“Web Programming”,这真的很奇怪
-
描述有点混乱:/你能多描述一下为什么给定输入的输出为 1 吗?您想在输出中显示哪个值的索引?如果您再举一个例子,也有助于理解。
-
@Md.FaisalHabib 我添加了另一个示例,并更改了标题,谢谢
标签: java