当我输入END时,为什么我的程序会终止?

时间:2017-12-04 05:14:19

标签: java string break bluej

我正在尝试终止我的代码" 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++;
        }
    }
}

3 个答案:

答案 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次?