如何从用户在Java中的输入(扫描器)中计算脚本中的字符串,数字和双精度数?

问题描述 投票:0回答:2

我是一个初学者,我从别人的问题中学到的东西尝试了几种不同的方法,但是我认为以下问题的问题是我无法弄清楚代码的逻辑。如果有人可以提出一种解释代码逻辑的解决方案,我将不胜感激。我应该以method()的格式创建一个方法,该方法将提示用户输入包含字符串,数字和双精度数的脚本。该方法应计算字符串,数字和双精度数的数量,并打印出字符串,数字和双精度数的列表。我知道该方法会打印字符串,数字和双精度字符的列表,但似乎我无法获得计数器来对它们进行计数。到目前为止,我已经知道了:

 import java.util.Scanner;
 public class Games {

    private Scanner input;

 public Games() {

  input = new Scanner(System.in);

 }

 public void textParser() {

  System.out.println("Enter a Script");
  int intCount = 0;
  int dblCount = 0;
  int strCount = 0;

  while(input.hasNext()) {
   if(input.hasNextInt()) {
    int num = input.nextInt();
    System.out.println(num);
    intCount++;
 }else if(input.hasNextDouble()) {
   double value = input.nextDouble();
   System.out.println(value);
   dblCount++;
 }else {
   String oneWord = input.next();
   System.out.println(oneWord);
   strCount++;
 }
}

System.out.println("Number of integers: " + intCount);
System.out.println("Number of doubles: " + dblCount);
System.out.println("Number of strings: " + strCount);


}

  public static void main(String[] args) {
  Games demo = new Games();
  demo.textParser();
 }

}

预期的输入和输出示例:

 Enter a Script
 32 quick brown foxes jump over 65 lazy dogs and few doubles are 43.3 
 and 76.9

 32
 65
 Number of integers: 2
 43.3
 76.9
 Number of doubles: 2
 quick
 brown 
 foxes 
 jump 
 over
 lazy 
 dogs 
 and 
 few 
 doubles 
 are
 and
 Number of strings: 12

实际输出:

 32
 65
 43.3
 76.9
 quick
 brown 
 foxes 
 jump 
 over
 lazy 
 dogs 
 and 
 few 
 doubles 
 are
 and
java java.util.scanner counter
2个回答
0
投票

[在开头附近,您说while(scanner.hasNext()。这意味着,只要程序运行,循环中的所有代码都会被执行。

您已经将打印计数器的语句放在循环之外,并以某种方式设计了代码,使您永远不会离开该循环。

所以您需要某种退出条件。假设,如果其中一个字符串为exit,则退出循环并打印计数器:

while (input.hasNext()) {
    if (input.hasNextInt()) {
        // ...
    } else if (input.hasNextDouble()) {
        // ...
    } else {
        String oneWord = input.next();
        System.out.println(oneWord);
        strCount++;

        if (oneWord.equals("exit")) {
            input.close();
            break;
        }
    }
}

0
投票

扫描程序将继续读取,直到找到“文件结尾”条件。

© www.soinside.com 2019 - 2024. All rights reserved.