用java写一个程序:产生7个正整数,前6个的范围是大于等于1小于等于33且不相等,最后一个数的范围是大于等于1小于等于16
时间: 2024-04-29 13:23:07 浏览: 14
好的,我可以帮您解决这个Java编程问题。以下是一个简单的程序,可以生成符合您要求的7个正整数:
```java
import java.util.*;
public class Main {
public static void main(String[] args) {
Set<Integer> set = new HashSet<>();
Random rand = new Random();
// 生成前6个数
while (set.size() < 6) {
int num = rand.nextInt(33) + 1;
set.add(num);
}
// 生成最后一个数
int lastNum = rand.nextInt(16) + 1;
// 输出结果
System.out.print("生成的7个数为:");
for (int num : set) {
System.out.print(num + " ");
}
System.out.print(lastNum);
}
}
```
该程序使用了一个`Set`来保存前6个数,确保它们不相等。随机数生成器`Random`被用来生成整数。程序输出所有生成的数,符合题目要求。
相关问题
java利用字符串方法compareTo(String s)实现5个字符串的排序。比如:
可以利用compareTo()方法实现字符串的字典序排序,具体步骤如下:
1. 定义一个字符串数组,包含要排序的5个字符串。
2. 使用一个循环,依次比较每个字符串,将其按照字典序排序。具体实现可以使用冒泡排序、选择排序等。
3. 在比较两个字符串时,使用compareTo()方法,如果字符串1大于字符串2,则返回一个正整数;如果字符串1小于字符串2,则返回一个负整数;如果两个字符串相等,则返回0。
4. 按照比较结果进行排序,最终得到排序后的字符串数组。
下面是一个示例代码:
```
public class StringSort {
public static void main(String[] args) {
String[] strings = {"apple", "banana", "orange", "grape", "pear"};
// 冒泡排序
for (int i = 0; i < strings.length - 1; i++) {
for (int j = 0; j < strings.length - i - 1; j++) {
if (strings[j].compareTo(strings[j + 1]) > 0) {
String temp = strings[j];
strings[j] = strings[j + 1];
strings[j + 1] = temp;
}
}
}
// 输出排序结果
for (String s : strings) {
System.out.println(s);
}
}
}
```
输出结果为:
```
apple
banana
grape
orange
pear
```
用Java写一个如下描述的代码 磁盘的容量单位常用的有M,G,T这三个等级,它们之间的换算关系为1T = 1024G,1G = 1024M,现在给定n块磁盘的容量,请对它们按从小到大的顺序进行稳定排序,例如给定5块盘的容量,1T,20M,3G,10G6T,3M12G9M排序后的结果为20M,3G,3M12G9M,1T,10G6T。注意单位可以重复出现,上述3M12G9M表示的容量即为3M+12G+9M,和12M12G相等。 输入描述:输入第一行包含一个整数n(2 <= n <= 100),表示磁盘的个数,接下的n行,每行一个字符串(长度大于2,小于30),表示磁盘的容量,由一个或多个格式为mv的子串组成,其中m表示容量大小,v表示容量单位,例如20M,1T,30G,10G6T,3M12G9M。磁盘容量m的范围为1到1024的正整数,容量单位v的范围只包含题目中提到的M,G,T三种,换算关系如题目描述。 输出描述:输出n行,表示n块磁盘容量排序后的结果。
```
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
String[] disks = new String[n];
for (int i = 0; i < n; i++) {
disks[i] = sc.next();
}
Disk[] objs = new Disk[n];
// 将字符串转为Disk对象
for (int i = 0; i < n; i++) {
objs[i] = new Disk(disks[i]);
}
// 对Disk对象数组进行排序
Arrays.sort(objs);
// 输出排序后的结果
for (int i = 0; i < n; i++) {
System.out.println(objs[i].toString());
}
}
static class Disk implements Comparable<Disk> {
long size; // 磁盘大小
String unit; // 磁盘单位
public Disk(String str) {
String[] strs = str.split("(?<=\\D)(?=\\d)|(?<=\\d)(?=\\D)");
long s = Long.parseLong(strs[0]);
String u = strs[1];
// 将磁盘容量单位统一转化为最小单位B
switch (u) {
case "M":
s *= 1024 * 1024;
break;
case "G":
s *= 1024 * 1024 * 1024;
break;
case "T":
s *= 1024 * 1024 * 1024 * 1024;
break;
}
size = s;
unit = "B";
}
@Override
public int compareTo(Disk o) {
if (size == o.size) {
return 0;
} else {
return size < o.size ? -1 : 1;
}
}
@Override
public String toString() {
// 将磁盘容量转化为所需的单位并输出
if (size % (1024 * 1024 * 1024 * 1024L) == 0) { // 大于1T,输出T
return size / (1024 * 1024 * 1024 * 1024L) + "T";
} else if (size % (1024 * 1024 * 1024L) == 0) { // 大于1G,输出G
return size / (1024 * 1024 * 1024L) + "G";
} else if (size % (1024 * 1024) == 0) { // 大于1M,输出M
return size / (1024 * 1024) + "M";
} else {
return size + "B"; // 不大于1M,输出B
}
}
}
}
```