java编写第一题:将一个输入位数不确定的正整数按三位分解格式输出 第二题:使用随机的20个正整数使用随机的20个正整数,且每个数在1000至9999之间。奖这20个数并存放到数组a中。编写方法sort(),该功能是:要求数组按照每个数的后三位的大小进行升序排列。将排列后的前10个数存入数组b中。输出排序后的数组a和数组b!!使用java语言 不要复制的c语言 谢谢!
第1个回答 2018-05-10
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class Test {
public static void main(String[] args) throws Exception {
int[] a=new int[20];
for (int i = 0; i < 20; i++) {
a[i]=(int)((Math.random() * 9 + 1) * 1000);
}
int[] b=sort(a);
}
public static int[] sort(int[] arr){
List<Integer> list=new ArrayList<Integer>();
for (int i : arr) {
list.add(i);
}
Collections.sort(list, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
o1=Integer.parseInt(o1.toString().substring(1));
o2=Integer.parseInt(o2.toString().substring(1));
// TODO Auto-generated method stub
return o1-o2;
}
});
int[] b=new int[10];
for (int i = 0; i < b.length; i++) {
b[i]=list.get(i);
}
return b;
}
}
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class Test {
public static void main(String[] args) throws Exception {
int[] a=new int[20];
for (int i = 0; i < 20; i++) {
a[i]=(int)((Math.random() * 9 + 1) * 1000);
}
int[] b=sort(a);
}
public static int[] sort(int[] arr){
List<Integer> list=new ArrayList<Integer>();
for (int i : arr) {
list.add(i);
}
Collections.sort(list, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
o1=Integer.parseInt(o1.toString().substring(1));
o2=Integer.parseInt(o2.toString().substring(1));
// TODO Auto-generated method stub
return o1-o2;
}
});
int[] b=new int[10];
for (int i = 0; i < b.length; i++) {
b[i]=list.get(i);
}
return b;
}
}
1.String number=new DecimalFormat("#,###").format(sz);
能再详细点吗
追答这还不够详细么 粘贴上直接据能用啊
第2个回答 2018-05-10
package com.wenxy.test.baidu.zhidao.bank;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class Test {
// 将num分为k个数保存到result中
void splitNum(int num, int k, List<Integer> result) {
if (k > 1) {
result.add(num % 10);
splitNum(num / 10, k - 1, result);
} else {
result.add(num);
System.out.print("result: ");
for (Integer integer : result) {
System.out.print(integer + "\t");
}
System.out.println();
}
}
void sort() {
int[] a = new int[20];
Random random = new Random();
System.out.print("a: ");
for (int i = 0; i < a.length; i++) {
a[i] = random.nextInt(8999) + 1000;
System.out.print(a[i] + "\t");
}
System.out.println();
int[] c = new int[10];
for (int i = 0; i < c.length; i++) {
c[i] = a[i] % 1000;
}
// sort 使用冒泡排序优化版,没有用collections
int flag = c.length; // 最后一次交换位置的标识,意味着后面已经有序
while (flag > 0) {
int k = flag;
flag = 0;
for (int j = 0; j < k - 1; j++) {
if (c[j] > c[j + 1]) {
flag = j + 1;
int temp = c[j];
c[j] = c[j + 1];
c[j + 1] = temp;
}
}
}
int[] b = new int[10];
System.out.print("b: ");
for (int i = 0; i < b.length; i++) {
b[i] = c[i];
System.out.print(b[i] + "\t");
}
}
public static void main(String[] args) {
Test test = new Test();
test.splitNum(4546, 3, new ArrayList<Integer>());
test.sort();
}
}追问
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class Test {
// 将num分为k个数保存到result中
void splitNum(int num, int k, List<Integer> result) {
if (k > 1) {
result.add(num % 10);
splitNum(num / 10, k - 1, result);
} else {
result.add(num);
System.out.print("result: ");
for (Integer integer : result) {
System.out.print(integer + "\t");
}
System.out.println();
}
}
void sort() {
int[] a = new int[20];
Random random = new Random();
System.out.print("a: ");
for (int i = 0; i < a.length; i++) {
a[i] = random.nextInt(8999) + 1000;
System.out.print(a[i] + "\t");
}
System.out.println();
int[] c = new int[10];
for (int i = 0; i < c.length; i++) {
c[i] = a[i] % 1000;
}
// sort 使用冒泡排序优化版,没有用collections
int flag = c.length; // 最后一次交换位置的标识,意味着后面已经有序
while (flag > 0) {
int k = flag;
flag = 0;
for (int j = 0; j < k - 1; j++) {
if (c[j] > c[j + 1]) {
flag = j + 1;
int temp = c[j];
c[j] = c[j + 1];
c[j + 1] = temp;
}
}
}
int[] b = new int[10];
System.out.print("b: ");
for (int i = 0; i < b.length; i++) {
b[i] = c[i];
System.out.print(b[i] + "\t");
}
}
public static void main(String[] args) {
Test test = new Test();
test.splitNum(4546, 3, new ArrayList<Integer>());
test.sort();
}
}追问
请问一下 能不能讲解一下算法 就是写一下算法分析 我是java小白 能写流程图最好!谢谢!!谢谢!
追答算法的话,网上一大堆啊,
搜一下就行了,有很多讲的都不错的
追问最后一段的splitNum(4546,3,...)这代表啥意思 我换了其他数字好像也可以 这一段为啥要调用main函数 还有 你能把解这道题的思路讲一下吗 谢谢啦!!
追答main是主函数,就是程序入口,spiltNum是方法啊,看上面怎么实现的,就是思路了
追问那个while后面的flag为什么=0 还有后面的arraylist 有什么作用吗
追答等于0说明排序完成了啊,没有产生交换,那个list用来保存数据的吧,数组是固定长度的不易增减
本回答被提问者和网友采纳