为了账号安全,请及时绑定邮箱和手机立即绑定

如何编写一种方法,将单词向后存储在从用户输入接收到的数组列表中,直到输入“完成”?

如何编写一种方法,将单词向后存储在从用户输入接收到的数组列表中,直到输入“完成”?

侃侃尔雅 2021-12-18 15:52:31
编写一个方法,该方法不断地从用户那里读取单词,直到输入的单词“完成”为止,并将每个单词按输入顺序逆向拼写的每个单词存储在 ArrayList 中。这是我到目前为止的代码,但是每当我尝试在主类中调用它时,它都会失败。有人可以帮帮我吗?我已经包括了我在其中创建方法的类和调用它的主类。我不能组合这两个类,所以我需要能够在我的主类中从 todo 调用对象。提前致谢!示例输入:香蕉赛车小狗完成结果数组列表:anaab Racecar yppupimport 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;        }    }这是主类import java.util.Scanner;public class main {public static void main(String[] args) {    Scanner keyboard=new Scanner(System.in);     todo x=new todo();     x.storeBackwards(keyboard);}}
查看完整描述

2 回答

?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

在您的代码中,String input=keyboard.next();您只调用了keyboard.next()一次。所以在input读取第一个标记后,String 变量的值不变。


所以它导致无限循环,这就是你得到异常的原因


而在两者的for循环使用的循环变量int i,使用像不同的变量int j的嵌套for循环


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;


    }


查看完整回答
反对 回复 2021-12-18
?
眼眸繁星

TA贡献1873条经验 获得超9个赞

您还可以使用 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();

    }


查看完整回答
反对 回复 2021-12-18
  • 2 回答
  • 0 关注
  • 213 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号