用字符串终止循环。 (JAVA)

时间:2014-02-22 23:19:08

标签: java loops

编写一个使用while循环的程序。在循环的每次迭代中,提示用户输入一个数字 - 正数,负数或零。保持用户输入的数字的总计,并保持用户输入的条目数。只要用户输入“q”退出,程序就应该停止。用户完成后,打印总计和用户输入的条目数。

当我输入0之类的数字时,我可以让这个程序工作,以终止循环。但是我不知道如何获得它以便字符串阻止它。

public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    int count = 0;
    int sum = 0;
    int num;
    System.out.println("Enter an integer, enter q to quit.");
    num = in.nextInt();
    while (num != 0) {
        if (num > 0){
        sum += num;
        }
        if (num < 0){
        sum += num;  
        }
        count++;
        System.out.println("Enter an integer, enter q to quit.");
        num = in.nextInt();
    }
    System.out.println("You entered " + count + " terms, and the sum is " + sum + ".");

}

3 个答案:

答案 0 :(得分:1)

您的策略是将输入作为字符串,检查它是否为“q”,如果没有转换为数字和循环。

(因为这是你的项目,我只提供策略而不是代码)

这是一个粗略的策略:

String line;
line = [use your input method to get a line]
while (!line.trim().equalsIgnoreCase("q")) {
   int value = Integer.parseInt(line);
   [do your work]
   line = [use your input method to get a line]
}

答案 1 :(得分:0)

java期望一个整数,但我们应该给出相同的异常。解决这个问题的一种方法是输入一个字符串,这样如果用户第一次按下的是Q,则永远不会进入循环,如果不是Q.我们假设用户是专家,只会输入数字和Q完了。在这段时间内,我们使用num.parseInt(String)

将String转换为数字
Integer num;
String input;
while(!input.equal(q)){
 num=num.parseInt(input)
  if(num<0)
   sum+=1;
  else
   sumA+=1;
}

答案 2 :(得分:0)

  public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    int count = 0;
    int sum = 0;
    String num;
    System.out.println("Enter an integer, enter q to quit.");
    num = in.next();
    while (!num.equals("q")) {
          sum += Integer.parseInt(num);
        count++;
      System.out.println("Enter an integer, enter q to quit.");
      num = in.next();
    }
    System.out.println("You entered " + count + " terms, and the sum is " + sum + ".");

  }

简化您的代码升级并且易于理解,并为您提供您想要的内容。

还可以添加一个if语句来检查它们是否输入了另一个随机值(因此如果用户没有监听,程序不会崩溃)。类似的东西:

if(isLetter(num.charAt(0))
  System.out.println("Not an int, try again");

将它放在while循环之后,因此它已经检查过它是否为q。