如何返回ArrayList中的最后一个字母并返回输入的字母总数?

时间:2014-04-21 23:24:44

标签: java if-statement arraylist

我一直试图提出如下问题:

  

程序应该一直提示用户输入一个字母,直到用户输入“!”,这样就结束了程序。每次使用输入一个字母时,程序都应该将字母添加到输入的前一个字母并打印结果。该计划还应该返回:

     
      
  • 输入“@”时输入的最后一个字母。
  •   
  • 输入“#”时输入的字母总数。
  •   

我被困在如何返回最后输入的字母并返回输入的字母数。我想过如果陈述,但他们似乎没有工作。到目前为止,这是我的代码:

import java.util.Scanner;
import java.util.ArrayList;
public class check {

static Scanner input = new Scanner (System.in);
static ArrayList<String> array= new ArrayList<>();

public static void main(String[] args) {
    System.out.print("Please enter a letter: ");
    String a=input.nextLine();
    while ( !a.equals("!")) {
        array.add(a);
        for(String b : array) {
            System.out.print(b);
        }
        System.out.print("\n"+"Please enter a letter: ");
        a=input.nextLine();
    }
    // array.add(a);
    if((a.equals("#"))) {
        ArrayList.get(ArrayList.size()-1);
        for(String b : array) {
            System.out.print(b);
        }
    }

我知道我所做的if语句不正确,因为它给出了红线。但是,不知道接下来该做什么以及做什么。

1 个答案:

答案 0 :(得分:0)

以下是您的代码逐行执行的操作:

同时!不是按下的键,将按下的键添加到名为“array”的字符串ArrayList中。之后,打印出“array”中的每个字符串,然后等待下一次按键。

如果!按下,while循环不会发生(没有任何内容添加到数组,没有打印出来,没有.nextLine())。

此时,如果最后一个键不是“#”,则不执行任何操作,程序将终止。如果是,请进行静态调用

ArrayList.get() //(this is a compilation error)

然后进行静态调用

ArrayList.size() - 1 //(another compilation error).  

要修复这些错误并清理代码以使其可读,应将其写为:

if(a.equals("#")){ //Remove the superfluous parentheses
    array.get(array.size() - 1);

当您更改该行时,您现在将执行此操作:如果最后一个键是“#”,则获取数组中的最后一个字符串并对其执行任何操作(我假设您需要System.out.println()在这里,做一个array.get(array.size() - 1)但没有将它赋值给变量什么也没做。在基本上没有做任何事之后,取出数组中的每个字符串并将其打印出来。

如果你说出你的代码是这样做的,那么问题应该是显而易见的;它真的很有帮助!您必须稍微更改程序以完成您想要的任务。

在我看来,你想做的是一个while循环检查!a.equals(“!”),因为我们仍然想要!结束该计划。但是,在while循环中,如果打印出数组中的值,则需要添加if和else:if检查输入的键是否为“@”,如果是,则打印...否则,如果检查键是否为“#”,是否为print array.size()。

如果您正在阅读作业的要求,那也是如此;可能是你应该进行字符串连接而不是填充ArrayList,即在块外面声明stringBuilder,在块内面声明:

if (stringBuilder == null){
    stringBuilder = new StringBuilder(a);
}

stringBuilder.append(a);
//print stringBuilder and then print a or stringBuilder.length()