Java 如何编写一种方法,将从用户输入接收的单词向后存储在arraylist中,直到;“完成”;有人报名吗?
编写一个方法,持续读取用户输入的单词,直到输入的单词“完成”,并按照输入的顺序在ArrayList中存储反向拼写的每个单词 这是我到目前为止的代码,但每当我试图在我的主类中调用它时,它总是失败。有人能帮我吗?我已经包括了创建方法的类和调用方法的主类。我无法组合这两个类,因此我需要能够在我的主类中从todo调用对象。提前谢谢Java 如何编写一种方法,将从用户输入接收的单词向后存储在arraylist中,直到;“完成”;有人报名吗?,java,arrays,arraylist,Java,Arrays,Arraylist,编写一个方法,持续读取用户输入的单词,直到输入的单词“完成”,并按照输入的顺序在ArrayList中存储反向拼写的每个单词 这是我到目前为止的代码,但每当我试图在我的主类中调用它时,它总是失败。有人能帮我吗?我已经包括了创建方法的类和调用方法的主类。我无法组合这两个类,因此我需要能够在我的主类中从todo调用对象。提前谢谢 示例输入:香蕉赛车小狗完成 结果ArrayList:ananab racecar yppup import java.util.Scanner; import java.ut
示例输入:香蕉赛车小狗完成 结果ArrayList:ananab racecar yppup
import java.util.Scanner;
import java.util.ArrayList;
public class todo extends main{
public ArrayList <String>storeBackwards (Scanner keyboard) {
ArrayList<String> words=new ArrayList ();
ArrayList<String> backwards=new ArrayList();
String input=keyboard.next();
while(!input.equalsIgnoreCase("done")) {
words.add(input);
String get="";
String back="";
for(int i=0; i<words.size();++i) {
get=words.get(i);
for(i=get.length()-1; i>=0; i--) {
back=back+get.charAt(i); }
backwards.add(back);
}
}
return backwards;
}
}
这里是您的代码
String input=keyboard.next()
您正在调用键盘。next()
只调用一次。因此,在读取第一个标记后,字符串变量input
的值保持不变
所以它会导致无限循环,这就是你得到异常的原因
两个for循环中使用的循环变量都是int i
,对嵌套for循环使用不同的变量,如int j
public List<String> storeBackwards (Scanner keyboard) {
ArrayList<String> backwards=new ArrayList<String>();
String input=keyboard.next();
while(!input.equalsIgnoreCase("done")) {
String back="";
for(int j=input.length()-1; j>=0; j--) {
back=back+input.charAt(j);
}
backwards.add(back);
back="";
input=keyboard.next();
}
return backwards;
}
for(int j=get.length()-1;j>=0;j--){
back=back+get.charAt(j);
}
对代码进行如下修改后,您的测试用例被清除
public List<String> storeBackwards (Scanner keyboard) {
ArrayList<String> backwards=new ArrayList<String>();
String input=keyboard.next();
while(!input.equalsIgnoreCase("done")) {
String back="";
for(int j=input.length()-1; j>=0; j--) {
back=back+input.charAt(j);
}
backwards.add(back);
back="";
input=keyboard.next();
}
return backwards;
}
公共列表存储向后(扫描仪键盘){
ArrayList向后=新建ArrayList();
字符串输入=键盘.next();
而(!input.equalsIgnoreCase(“完成”)){
字符串back=“”;
对于(int j=input.length()-1;j>=0;j--){
后退=后退+输入字符(j);
}
向后。添加(向后);
back=“”;
输入=键盘。下一步();
}
倒退;
}
您还可以使用StringBuffer预定义的reverse()函数,如下代码段所示:
ArrayList<String> backwards = new ArrayList();
Scanner keyboard = new Scanner(System.in);
String input = keyboard.next();
StringBuffer a = new StringBuffer(input);
while (!input.equalsIgnoreCase("done")) {
a = new StringBuffer(input);
backwards.add(a.reverse().toString());
input = keyboard.next();
}
ArrayList向后=新建ArrayList();
扫描仪键盘=新扫描仪(System.in);
字符串输入=键盘.next();
StringBuffer a=新的StringBuffer(输入);
而(!input.equalsIgnoreCase(“完成”)){
a=新的StringBuffer(输入);
向后。添加(a.反向().toString());
输入=键盘。下一步();
}
为什么todo类从main扩展?提供示例输入和预期输出示例输入:香蕉赛车小狗完成结果数组列表:ananab赛车yppup