我是一般的编程新手,所以我试图在这个问题上尽可能具体.这本书我正在做一些练习.我设法做了他们所说的一半以上,但这只是我一直在努力寻找的一个输入.
我会写问题然后我的代码,
"编写一个创建并打印XXX-XXX-XXXX表格的随机电话号码的应用程序.在输出中包含破折号.不要让前三个数字包含8或9(但不要比那个更严格) ),并确保第二组三位数不大于742. 提示:通过最简单的方式构建电话号码.每个数字不必单独确定. "
好的,突出显示的句子就是我正在看的内容.这是我的代码:
import java.util.Random;
public class PP33 {
public static void main (String[] args) {
Random rand = new Random();
int num1, num2, num3;
num1 = rand.nextInt (900) + 100;
num2 = rand.nextInt (643) + 100;
num3 = rand.nextInt (9000) + 1000;
System.out.println(num1+"-"+num2+"-"+num3);
}
}
Run Code Online (Sandbox Code Playgroud)
我怎么想这样做?我在第3章,所以我们尚未讨论if语句等,但别名,字符串类,包,导入声明,随机类,数学类,格式输出(decimal-和numberFormat),Printf,枚举和包装类+自动装箱.因此,请考虑仅根据这些假设回答问题.
代码没有任何错误.
谢谢!
看来这似乎是作业,我觉得应该给出解释正在发生的事情.
您需要生成三组数字.
第一个数字的要求最高.它必须大于100但不包含8或9.
您可以通过以下方式确保它始终大于100:
(rand.nextInt(7)+1) * 100.
Run Code Online (Sandbox Code Playgroud)
这样说,生成一个介于0和6之间的随机数.为该数字添加1,以确保它永远不会为0.因此,如果它选择0,则添加+1使其成为1.如果选择6,则添加+1 7,等等.这满足规则#1和规则#2.
您确保第一个号码永远不会有8或9.
(rand.nextInt(8) * 10) + rand.nextInt(8)
Run Code Online (Sandbox Code Playgroud)
从0-7创建一个随机数.*10确保它位于第十位,而最后一位将数字放在最后位置.
而不是尝试修复其他答案,因为它也错误地使用DecimalFormat.
package stackoverflow_4574713;
import java.text.DecimalFormat;
import java.util.Random;
public class Main {
public static void main(String[] args) {
Random rand = new Random();
int num1 = (rand.nextInt(7) + 1) * 100 + (rand.nextInt(8) * 10) + rand.nextInt(8);
int num2 = rand.nextInt(743);
int num3 = rand.nextInt(10000);
DecimalFormat df3 = new DecimalFormat("000"); // 3 zeros
DecimalFormat df4 = new DecimalFormat("0000"); // 4 zeros
String phoneNumber = df3.format(num1) + "-" + df3.format(num2) + "-" + df4.format(num3);
System.out.println(phoneNumber);
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
662-492-1168
Run Code Online (Sandbox Code Playgroud)
对于前三位数字,您需要分别生成每个数字。请参阅下面的变量 i1、i2 和 i3。
对于三位数字,0 到 741 之间的任何数字都可以使用。
对于最后一组四位数字,0 到 9999 之间的任何数字都可以使用。
这里的技巧是如何格式化输出。你可以用一个NumberFormat对象来做,但我选择用String.format()方法来做。在其中,您指定要如何格式化每个数字。所以,我使用了格式字符串"%d%d%d-%03d-%04d"。所述%d插入件的基部-10格式的整数到字符串。在%03d肯定使得它广三个字符,用任何额外的空间是左填充0。换句话说,4被格式化为"004"并且27被格式化为"027"。在%04d工作方式类似,但它是广泛四个大字。
这是你如何把它们放在一起的。
随机 r = 新随机();
int i1 = r.nextInt(8); // 返回 0 到 7 之间的随机数
int i2 = r.nextInt(8);
int i3 = r.nextInt(8);
int i4 = r.nextInt(742); // 返回 0 到 741 之间的随机数
int i5 = r.nextInt(10000); // 返回 0 到 9999 之间的随机数
String phoneNumber = String.format("%d%d%d-%03d-%04d", i1, i2, i3, i4, i5);
System.out.println(电话号码);`