Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中组合数字?_Java_Numbers - Fatal编程技术网

如何在java中组合数字?

如何在java中组合数字?,java,numbers,Java,Numbers,出于某种原因,当我运行以下代码时,程序打印出“JDN4”或“JDN16”,而我一直希望它打印出“JDN”,后面跟着从0到9的三个数字;例如,“JDN123”或“JDN045”或“JDN206”。代码有什么问题 import java.util.*; public class Document2 { public static void main(String[] args) { String initials = "JDN"; int randomNum

出于某种原因,当我运行以下代码时,程序打印出“JDN4”或“JDN16”,而我一直希望它打印出“JDN”,后面跟着从0到9的三个数字;例如,“JDN123”或“JDN045”或“JDN206”。代码有什么问题

import java.util.*;

public class Document2 {
    public static void main(String[] args) {
        String initials = "JDN";
        int randomNumbers;
        Random generator = new Random();
        int randomNumber1 = generator.nextInt(9);
        int randomNumber2 = generator.nextInt(9);
        int randomNumber3 = generator.nextInt(9);
        randomNumbers = randomNumber1 + randomNumber2 + randomNumber3;
        String userName = initials + randomNumbers;
        System.out.println("Your username is " + userName +  ".");
    }
}

您的问题是
随机数
被声明为
整数
,因此当您在其他整数上使用
+
时,它将对整数求和,而不是将它们串联起来

因此,如果我们使用您的方法,我们需要一个字符串:

String userName = initials + randomNumber1 + randomNumber2 + randomNumber3;

但只要从0-999中生成一个数字并用零填充它就会容易得多:

int randomNumber = generator.nextInt(1000);
String usernName = initials + String.format("%03d", randomNumber);


另外值得注意的是,
Random.nextInt(n)
生成一个介于0(包括)和
n(排除)之间的随机数,因此您可能应该执行
。如果您想要一个介于0和9之间的数字,nextInt(10)
。您的问题是
Random numbers
被声明为
int
,因此,当您在其他整数上使用
+
时,它将对整数求和,而不是将它们串联起来

因此,如果我们使用您的方法,我们需要一个字符串:

String userName = initials + randomNumber1 + randomNumber2 + randomNumber3;

但只要从0-999中生成一个数字并用零填充它就会容易得多:

int randomNumber = generator.nextInt(1000);
String usernName = initials + String.format("%03d", randomNumber);

另外值得注意的是,
Random.nextInt(n)
生成一个介于0(包括)和
n(排除)之间的随机数,因此如果您想要一个介于0和9之间的数字,您可能应该执行
。nextInt(10)

您是在添加数字,而不是连接数字

建议的解决方案:仅使用1个随机数

generator.nextInt(1000);
或者,你可以这样做:

String userName = initials + randomNumer1 + randomNumber2 + randomNumber3;
但我几乎可以肯定,你会得到相同数字的2倍甚至3倍,所以你应该使用第一种方法

您是在添加数字,而不是连接数字

建议的解决方案:仅使用1个随机数

generator.nextInt(1000);
或者,你可以这样做:

String userName = initials + randomNumer1 + randomNumber2 + randomNumber3;

但我几乎可以肯定,你会得到相同数字的2倍甚至3倍,因此你应该使用第一种方法。

假设你有三个数字:

int randomNumber1 = 3;
int randomNumber2 = 4;
int randomNumber3 = 5;
int randomNumbers = randomNumber1 + randomNumber2 + randomNumber3;
你希望随机数为345吗?或者你预计是12点

现在试试这个:

String randomNumbers = "" + randomNumber1 + randomNumber2 + randomNumber3;

这次你得到了什么?

假设你有三个数字:

int randomNumber1 = 3;
int randomNumber2 = 4;
int randomNumber3 = 5;
int randomNumbers = randomNumber1 + randomNumber2 + randomNumber3;
你希望随机数为345吗?或者你预计是12点

现在试试这个:

String randomNumbers = "" + randomNumber1 + randomNumber2 + randomNumber3;

这次你得到了什么?

你在这里添加数字

randomNumbers = randomNumber1 + randomNumber2 + randomNumber3;
如果你想用同样的方法达到你想要的目标,你可以这样做

randomNumbers = randomNumber1 + (randomNumber2 * 10) + (randomNumber3 * 100);

你在这里加数字

randomNumbers = randomNumber1 + randomNumber2 + randomNumber3;
如果你想用同样的方法达到你想要的目标,你可以这样做

randomNumbers = randomNumber1 + (randomNumber2 * 10) + (randomNumber3 * 100);

错误在于
+
运算符在
int
变量上使用时执行加法,而不是串联

使用


将数字转换为字符串并将其串联。

错误在于
+
运算符在
int
变量上使用时执行加法,而不是串联

使用


将数字转换为字符串并将其连接起来。

您添加的是三位数字,最多为27位。您希望连接这些数字的字符串表示形式


也就是说,为什么不简单地生成一个介于0和999之间的随机数呢?

您正在添加三位数字,最多可以得到27位。您希望连接这些数字的字符串表示形式

也就是说,为什么不直接生成一个介于0和999之间的随机数呢

String userName=String.format("%s%d%d%d",initials,randomNumber1,randomNumber2,randomNumber3);
试试看


提示:您正在将数字添加为数字。。如果您将它们“添加”到一个空字符串(“”)中,它们将被连接为字符串而不是字符串OK,我不会添加答案,下面给出的所有答案都很好(并且都是相同的)-但是您是否考虑过可能会得到两倍相同的用户名?对我来说,这闻起来像是一个潜在的bug,你应该检查一下单一性!+添加数字和concats字符串。不要将其用于“concat”数字,在这种情况下,您只能得到1或2位数字;)提示:您正在将数字添加为数字。。如果您将它们“添加”到一个空字符串(“”)中,它们将被连接为字符串而不是字符串OK,我不会添加答案,下面给出的所有答案都很好(并且都是相同的)-但是您是否考虑过可能会得到两倍相同的用户名?对我来说,这闻起来像是一个潜在的bug,你应该检查一下单一性!+添加数字和concats字符串。不要将其用于“concat”数字,在这种情况下,您只能得到1或2位数字;)事实上,我想反过来说,既然数字的格式是大端的:
randomNumber1*100+randomNumber2*10+randomNumber3
@ChrisJester-Young既然我们谈论的是随机数,为什么endianness很重要?@NullUserExceptionఠ_ఠ: 从实用的角度来看,这并不重要,但它确实使结果显示为与
”+随机数1+随机数2+随机数3
(与
”+随机数3+随机数2+随机数1
)相同,这可能有助于OP更好地理解此方法。这也有额外的“困难”你必须关心零的前导,事实上,我会反过来说,因为数字的格式是大端的:
randomNumber1*100+randomNumber2*10+randomNumber3
@ChrisJester-Young既然我们谈论的是随机数,为什么端数很重要?@NullUserExceptionఠ_ఠ: 从实用的角度来看,这并不重要,但它确实使结果显示为与
”+随机数1+随机数2+随机数3
(与
”+随机数3+随机数2+随机数1
)相同,这可能有助于OP更好地理解此方法。这也有额外的“困难”您必须关心前导零生成从0到999的随机数可能有点麻烦,因为这意味着数字0-99将有1或2个额外的零添加到stri