我一直试图提出如下问题:
程序应该一直提示用户输入一个字母,直到用户输入“!”,这样就结束了程序。每次使用输入一个字母时,程序都应该将字母添加到输入的前一个字母并打印结果。该计划还应该返回:
- 输入“@”时输入的最后一个字母。
- 输入“#”时输入的字母总数。
我被困在如何返回最后输入的字母并返回输入的字母数。我想过如果陈述,但他们似乎没有工作。到目前为止,这是我的代码:
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语句不正确,因为它给出了红线。但是,不知道接下来该做什么以及做什么。
答案 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()