我如何计算我拥有多少个字符串并将它们连接在一起?

时间:2014-10-02 02:21:59

标签: java string

我的程序要求用户输入可以是字符串,整数或双精度的输入列表。一旦用户完成输入列表,他们输入“退出”即可完成。 (即用户输入:1 2 2.3退出)

一旦他们输入“退出”,我的程序将添加整数和双精度,打印出这些值,它还会告诉你列表中有多少整数/双精度。

但是现在我还要考虑字符串输入(除int之外的任何东西或双重计算字符串)。如果我得到一些字符串值,我想计算有多少字符串,并将它们连接起来,并在最后打印出所有这些字符串。

我正在考虑使用“else”语句,因为它会解释除了int和double之外的所有内容,但是如何使用我现在拥有的代码呢?有没有办法让用户不必输入“退出”来完成列表?我可以这样做,以便一旦用户按下“回车”,程序会继续吗?提前谢谢。

import java.util.Scanner;

public class InputParser
{
   public static void main(String[] args)
   {
      Scanner scanner = new Scanner(System.in);
      System.out.println("How many values do you want to input?: ");
      int numValues = scanner.nextInt();
      System.out.println("Enter " + numValues + " values: ");
      int sumIntegers = 0;
      int countIntegers = 0;
      double sumDoubles = 0.0;
      int countDoubles = 0;

      while (scanner.hasNextLine())
      {
         if (scanner.hasNextInt())
         {
            countIntegers++;
            sumIntegers += scanner.nextInt();
         }
         else if (scanner.hasNextDouble())
         {
            countDoubles++;
            sumDoubles += scanner.nextDouble();
         }
         else
         {
            String str = scanner.next();
            if (str.equalsIgnoreCase("quit"))
            {
               break;
            }
         }
      }
      System.out.println("Number of integers: " + countIntegers);
      System.out.println("Sum of integers: " + sumIntegers);
      System.out.println("Number of doubles: " + countDoubles);
      System.out.println("Sum of doubles: " + sumDoubles);
   }
}

2 个答案:

答案 0 :(得分:0)

因为在下面的代码中,您从用户

中读取了String类型
  else
     {
        String str = scanner.next();
        if (str.equalsIgnoreCase("quit"))
        {
           break;
        }
     }

你需要有一个计数器来计算到目前为止输入的String用户数量,如

 int numberOfString = 0;

  else
     {
        String str = scanner.next();
        numberOfString++;
        if (str.equalsIgnoreCase("quit"))
        {
           break;
        }
     }
如果您不想保存它们,请将它们连接在一起

 String result = "";

  else
     {
        String str = scanner.next();
        numberOfString++;
        result += str+" "; <-- to make a blank so you can separate between each String
        if (str.equalsIgnoreCase("quit"))
        {
           break;
        }
     }

因为你问用户他或她想要放多少价值

根据建议,您可以将while循环更改为

 int i = 0;
 while( i < numValues){

  i++;
  }

因此,如果用户在此处输入2,则while循环仅读取2次

  System.out.println("How many values do you want to input?: ");
  int numValues = scanner.nextInt();

,所以无需检查用户是否完全输入:)

答案 1 :(得分:0)

嗯,您不需要将值的数量作为输入。因为有一个输入结束标记,退出&#39;。

无论如何,修复代码来处理所有字符串并产生连接结果非常简单。

import java.util.Scanner;

public class InputParser
{
    public static void main(String[] args)
    {
        Scanner scanner = new Scanner(System.in);

        System.out.println("Enter  values: ");
        int sumIntegers = 0;
        int countIntegers = 0;
        double sumDoubles = 0.0;
        int countDoubles = 0;
        StringBuilder sumString = new StringBuilder();
        int countStrings = 0;

        while (scanner.hasNextLine())
        {
            if (scanner.hasNextInt())
            {
                countIntegers++;
                sumIntegers += scanner.nextInt();
            }
            else if (scanner.hasNextDouble())
            {
                countDoubles++;
                sumDoubles += scanner.nextDouble();
            }
            else
            {
                String str = scanner.next();
                if (str.equalsIgnoreCase("quit"))
                {
                    break;
                }
                else {
                    ++countStrings;
                    sumString.append( str );
                }
            }
        }
        System.out.println("Number of integers: " + countIntegers);
        System.out.println("Sum of integers: " + sumIntegers);
        System.out.println("Number of doubles: " + countDoubles);
        System.out.println("Sum of doubles: " + sumDoubles);
        System.out.println("Number of strings: " + countStrings);
        System.out.println("concatenated string: " + sumString.toString());

        scanner.close();
    }
}

请不要忘记关闭扫描仪:如果没有,会有警告。