Java 在堆栈中搜索按字母顺序排在第一位的名称
我是编程新手,如果这个问题很简单,请接受我的道歉 我的老师希望我们创建一个方法,在堆栈中搜索按字母顺序排在第一位的名称并返回它 例如:如果堆栈中有以下名称: 泰格·伍兹、杰克·尼古拉斯、阿诺德·帕尔默、杰克·尼古拉斯、吉米·德莫里特、杰克·尼古拉斯、山姆·斯奈德、吉米·德莫里特、本·霍根、沃尔特·哈根、汤米·阿莫尔、博比·琼斯 该方法应返回Arnold Palmer 这是我的密码:Java 在堆栈中搜索按字母顺序排在第一位的名称,java,Java,我是编程新手,如果这个问题很简单,请接受我的道歉 我的老师希望我们创建一个方法,在堆栈中搜索按字母顺序排在第一位的名称并返回它 例如:如果堆栈中有以下名称: 泰格·伍兹、杰克·尼古拉斯、阿诺德·帕尔默、杰克·尼古拉斯、吉米·德莫里特、杰克·尼古拉斯、山姆·斯奈德、吉米·德莫里特、本·霍根、沃尔特·哈根、汤米·阿莫尔、博比·琼斯 该方法应返回Arnold Palmer 这是我的密码: public String findFirst() { System.out.println("f
public String findFirst() {
System.out.println("findFirst" );
Stack<String>temp = new Stack<String>();
char letter = 'A';
String name = null;
while(!names.isEmpty()) {
name = names.peek();
if(name.charAt(0) == letter) {
temp.push(name);
name = names.peek();
} else {
temp.push(name);
names.pop();
}
}
while(!temp.isEmpty()) {
names.push(temp.pop());
}
return name;
}
公共字符串findFirst(){
System.out.println(“findFirst”);
Stacktemp=新堆栈();
字符字母='A';
字符串名称=null;
而(!names.isEmpty()){
name=names.peek();
if(name.charAt(0)=字母){
临时推送(名称);
name=names.peek();
}否则{
临时推送(名称);
name.pop();
}
}
而(!temp.isEmpty()){
name.push(temp.pop());
}
返回名称;
}
程序进入无限循环
请帮助我,因为我需要知道如何为我的程序修复它
提前感谢您的无限循环:当您测试
name.charAt(0)=letter
,如果这是真的,您不会从name
堆栈中弹出,因此您将继续运行到该实例中(并不断推到temp
)
请注意,单独解决这个问题并不能使它像您希望的那样工作。例如,您应该发现您从未更新字母
的值是可疑的
此外,你不应该指望只看第一个字母就足够了。如果您想比较两个字符串的字母顺序,可以使用
字符串s上的.compareTo
方法。用于无限循环:当您测试name.charAt(0)=letter
时,如果这是真的,您不会从名称堆栈中弹出,因此您将继续运行到该实例中(以及推入并推入temp
)
请注意,单独解决此问题并不能使其正常工作。例如,您应该发现您从未更新字母的值是可疑的
另外,你不应该指望只看第一个字母就足够了。如果你想比较两个字符串的字母顺序,你可以使用.compareTo
方法对String
s.如果你需要保留堆栈,你应该先复制它,但这会找到字母顺序最小的e
public String findFirst() {
String name = null;
while(!names.isEmpty()) {
if(names.peek().compareTo(name) < 0) {
name = names.pop();
} else {
names.pop();
}
}
return name;
}
公共字符串findFirst(){
字符串名称=null;
而(!names.isEmpty()){
if(names.peek().compareTo(name)<0){
name=names.pop();
}否则{
name.pop();
}
}
返回名称;
}
如果需要保留堆栈,应先复制它,但这将找到按字母顺序排列的最小名称
public String findFirst() {
String name = null;
while(!names.isEmpty()) {
if(names.peek().compareTo(name) < 0) {
name = names.pop();
} else {
names.pop();
}
}
return name;
}
公共字符串findFirst(){
字符串名称=null;
而(!names.isEmpty()){
if(names.peek().compareTo(name)<0){
name=names.pop();
}否则{
name.pop();
}
}
返回名称;
}
迭代集合并返回搜索元素
for(String s:names)
{
if(s.startsWith("c")) // or if(s.charAt(0)==letter)
{
return s;
}
}
return null;
迭代集合并返回搜索元素
for(String s:names)
{
if(s.startsWith("c")) // or if(s.charAt(0)==letter)
{
return s;
}
}
return null;
也许你误解了你老师的意思
参考代码:
import java.util.Collections;
import java.util.Comparator;
import java.util.Stack;
public class StackTest {
public static void main(String[] args) {
Stack<String> stack = new Stack<String>();
stack.push("Tiger Woods");
stack.push("Jack Nicholas");
stack.push("Arnold Palmer");
stack.push("Jack Nicholas");
stack.push("Jimmy Demerrit");
stack.push("Jack Nicholas");
stack.push("Sam Sneed");
stack.push("Jimmy Demerrit");
stack.push("Ben Hogan");
stack.push("Jimmy Demerrit");
stack.push("Walter Hagen");
stack.push("Tommy Armor");
stack.push("Bobby Jones");
Collections.sort(stack, new Comparator<String>() {
public int compare(String o1, String o2) {
// the method compareTo in String class
return o2.compareTo(o1);
}
});
//the sorted stack
System.out.println(stack);
System.out.println(stack.pop());
}
}
也许你误解了你老师的意思
参考代码:
import java.util.Collections;
import java.util.Comparator;
import java.util.Stack;
public class StackTest {
public static void main(String[] args) {
Stack<String> stack = new Stack<String>();
stack.push("Tiger Woods");
stack.push("Jack Nicholas");
stack.push("Arnold Palmer");
stack.push("Jack Nicholas");
stack.push("Jimmy Demerrit");
stack.push("Jack Nicholas");
stack.push("Sam Sneed");
stack.push("Jimmy Demerrit");
stack.push("Ben Hogan");
stack.push("Jimmy Demerrit");
stack.push("Walter Hagen");
stack.push("Tommy Armor");
stack.push("Bobby Jones");
Collections.sort(stack, new Comparator<String>() {
public int compare(String o1, String o2) {
// the method compareTo in String class
return o2.compareTo(o1);
}
});
//the sorted stack
System.out.println(stack);
System.out.println(stack.pop());
}
}
谢谢,我在我的程序中插入了这段代码,它工作正常非常感谢,我在我的程序中插入了这段代码,它工作正常非常感谢