当前位置: 首页 > 知识库问答 >
问题:

Java语言使用扫描仪将整数值转换为字符串

越霖
2023-03-14

我创建了一个程序,它使用Scanner向用户询问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

我想用一个字符串来给我输入的数字集,但它只给我最后输入的值。这是-1,因为这是停止程序必须输入的数字。

我怎样才能解决这个问题?

共有3个答案

赫连永怡
2023-03-14

检查此代码

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);  
   }  
}  
尤钱明
2023-03-14

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

廉元龙
2023-03-14

在您的

while(value != -1){

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

您正在用新值替换字符串,因此旧值将丢失。您应该向以前存储的值添加新值。因此,您的代码可能如下所示

string = string + "," + value;

您还应该在处理值之前放置此代码,该值将为-1。

顺便说一句,当您了解更多关于Java的知识时,您就会知道每次调用

string + "," + value

正在创建新字符串。这样的字符串需要复制其他块的内容。对于长字符串,这可能会非常低效。为了优化这一点,我们可以在循环中使用StringBuilder和附加新部件。

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

 类似资料:
  • 问题内容: 给定一个数字: 将其转换为字符串的“最佳”方法是: 问题答案: 有多种方法: (我的偏爱) (我不知道编译器如何处理它,也许它和上面一样有效)

  • 任何人都可以帮我解决这个问题。我接受三个输入:整数、双精度和字符串,但Scanner类不接受字符串值

  • 我需要在一种方法中将文件名作为扫描仪的输入,并在所有其他方法中将该扫描仪用作其余代码的文件路径的引用。 我正在学习文件I/o,对于这个项目,我应该以文件名作为输入,计算文件中的行数,并将每行放入一个数组中。 我的问题出现在FileUtils期间。countRecords方法。在FileUtils中返回文件类型后。打开输入文件(openInputFile),然后将数据放入扫描仪(代码中的变量inf和

  • 我正试图用Java中的扫描器将一个字符串分成另外两个字符串。好像不起作用。我只能通过谷歌找到扫描仪用来读取控制台输入的例子。我从扫描仪的手册中找出了我做事情的方式,我不确定我错了什么。 第一个和第二个是空白的,我不知道为什么。

  • 如何将字符串值转换为整数,并将转换后的值乘以整数,这样我就可以得到300.00的结果。见下面的例子- 如果我像这样编码,那么我就会出错-

  • 问题内容: 在,我该怎么形成的从扫描仪读取结果? 那就是将扫描仪变成我想使用迭代的流。 问题答案: 您正在处理所有错误,不需要: 如果您确实要使用a ,那么您可以这样做: PS,您似乎也没有关闭资源。 总是 关闭一个。