我正在尝试终止我的代码" END"是输入到控制台,但我的代码不公平,我似乎无法看到它出错的地方,顺便说一下,我还没有学会如何进行调试,所以这很大程度上与为什么我无法解决这个问题。请尽可能帮忙。
import java.util.*;
class Main
{
public static void main(String args[])
{
int j = 0;
while (j++ <= 3) {
// Create Scanner object to take input from command prompt
Scanner s=new Scanner(System.in);
// Take input from the user and store it in st
String st = "";
while (!st.equals("END")) {
{
st=s.nextLine();
// Initialize the variable count to 0
int count=0;
// Convert String st to char array
char[] c=st.toCharArray();
// Loop till end of string
for(int i=0;i<st.length();i++)
// If character at index 'i' is not a space, then increment count
if(c[i]!=' ') count++;
// Print no.of spaces
System.out.printf("[%4d] spaces in ", +(st.length()-count));
// Print no.of spaces
System.out.println('"' + st + '"');
}
j++;
}
}
}
答案 0 :(得分:3)
如果您输入“结束”两次,则while (j++ <= 3) { ... }
您的程序将结束。
答案 1 :(得分:0)
因为你有两个while循环嵌套。你输入&#34; END&#34;在第二个while循环中,之后第二个循环结束,这是正确的。但正如你所看到的那样,它结束后会启动第一个循环while (j++ <= 3) {
,在这个while循环中,它等待用户输入3次,相当于Scanner s=new Scanner(System.in);
,因此它是正常的你的程序不要退出。如果您希望程序在输入后完成,则可能需要使用System.exit(-1);
命令。我已根据您的评论添加了代码。
import java.util.*;
class Main {
public static void main(String args[]) {
int j = 0;
while (j++ <= 3) {
// Create Scanner object to take input from command prompt
Scanner s = new Scanner(System.in);
// Take input from the user and store it in st
String st = s.nextLine();
if (!st.equals("END")) {
// Initialize the variable count to 0
int count = 0;
// Convert String st to char array
char[] c = st.toCharArray();
// Loop till end of string
for (int i = 0; i < st.length(); i++)
// If character at index 'i' is not a space, then increment count
{
if (c[i] != ' ') {
count++;
}
}
// Print no.of spaces
System.out.printf("[%4d] spaces in ", +(st.length() - count));
// Print no.of spaces
System.out.println('"' + st + '"');
} else {
System.exit(-1);
}
}
}
}
答案 2 :(得分:0)
我刚刚添加if条件而不使用循环。
diff
基本上当我得到输入结束时,我只是将j的值更改为5,以便终止第一个循环。并停止服用inpu。
您想要这种类型的解决方案还是需要输入3次?