Java的。使用扫描仪将整数值转换为String

时间:2015-09-26 18:03:14

标签: java string int

我创建了一个程序,它使用扫描程序向用户询问int值,直到它们插入-1,这使得程序停止接收数字。完成后,它将添加用户输入的所有值。到目前为止,这是我的代码:

public static void main(String[] args)
{
    int sum = 0, value, count = 0;   
    Scanner scan = new Scanner (System.in);  
    System.out.print ("Enter an integer (-1 to quit): ");  
    value = scan.nextInt(); 
    String string = Integer.toString(value);
    while (value != -1)
    {  
        count = count + 1;  
        sum = sum + value;  
        System.out.print("Enter an integer (-1 to quit): ");  
        value = scan.nextInt();  
        string = Integer.toString(value);
    }  
    System.out.println ();  
    if (count == 0)  
        System.out.println ("No values were entered.");  
    else  
    {  
        System.out.println("Number entered: " + string + ",");
        System.out.println ("The sum is " + sum);  
    }  
}  

我希望输出看起来像这样:

Entered numbers: 1,2,3,4,5 //example of number the user might enter
The sum is 15

我想使用String来为我提供输入数字的集合,但它只给我输入的最后一个值。这是-1,因为这是为了停止程序而必须输入的数字。

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:4)

在你的

while(value != -1){

    ...
    string = Integer.toString(value);
}

您正在用新值替换string值,因此丢失旧值。您应该为以前存储的值添加新值。所以你的代码看起来像

string = string + "," + value;

您还应该在处理value -1之前放置此代码。

顺便说一句,当您了解有关Java的更多信息时,您会在每次致电

时知道
string + "," + value

正在创建新的字符串。这样的字符串将需要复制其他块的内容。在长串的情况下,这可能是非常低效的。为了优化这一点,我们可以在循环中使用StringBuilderappend个新部分。

在Java 8中,我们也可以使用StringJoiner,它可以为我们自动添加前缀,分隔符和后缀。

答案 1 :(得分:0)

只需使用string += "," + Integer.toString(value);这将为您提供以逗号分隔的列表,其中列出了您输入的所有值。您当前的语句string = Integer.toString(value);会导致变量字符串重置为每次迭代的字符串表示“value”。

答案 2 :(得分:0)

检查此代码。

public static void main(String[] args)
{
   int sum = 0, value, count = 0;   
   Scanner scan = new Scanner (System.in);  
   System.out.print ("Enter an integer (-1 to quit): ");  
   value = scan.nextInt(); 
   StringBuilder sb = new StringBuilder();
   while (value != -1)
   {  
       if(sb.length() == 0){
           sb.append(value);
       }else{
           sb.append(","+value);
       }
      count = count + 1;  
      sum = sum + value;  
      System.out.print("Enter an integer (-1 to quit): ");  
      value = scan.nextInt();  
   }  
   System.out.println ();  
   if (count == 0)  
      System.out.println ("No values were entered.");  
   else  
   {  
      System.out.println("Number entered: " + sb.toString());
      System.out.println ("The sum is " + sum);  
   }  
}