我的程序要求用户输入可以是字符串,整数或双精度的输入列表。一旦用户完成输入列表,他们输入“退出”即可完成。 (即用户输入: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);
}
}
答案 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();
}
}
请不要忘记关闭扫描仪:如果没有,会有警告。