Java:将数字转换为二进制并从输入类排序
我无法将这些数字从输入文件转换为二进制。然后我假设用最小值对二进制数进行排序 数量最多的将排在第一位,数量最多的将排在最后。如果两个 数字的个数相同,请先按基数10对数字进行排序。 如果以10为基数的值相同,则按原始值对数字进行排序。打印出原始号码,其 以10为基数的值,最后以二进制打印出数字值。从中输入文件名 键盘我必须使用可比较的界面 如果有人能帮我把输入文件转换成二进制文件,那就足够了Java:将数字转换为二进制并从输入类排序,java,sorting,Java,Sorting,我无法将这些数字从输入文件转换为二进制。然后我假设用最小值对二进制数进行排序 数量最多的将排在第一位,数量最多的将排在最后。如果两个 数字的个数相同,请先按基数10对数字进行排序。 如果以10为基数的值相同,则按原始值对数字进行排序。打印出原始号码,其 以10为基数的值,最后以二进制打印出数字值。从中输入文件名 键盘我必须使用可比较的界面 如果有人能帮我把输入文件转换成二进制文件,那就足够了 public static void main(String[] args) throws IOExce
public static void main(String[] args) throws IOException {
//Prompt the user and asks for filename.
System.out.print("Enter the file name: ");
Scanner in = new Scanner(System.in);
String file = in.next(); //input file name
//Takes input and reads from file.
Scanner input = new Scanner(new FileReader(file));
for(int i = 0; i < 16; i++){
// Input file read.
System.out.println(input.nextLine());
}
publicstaticvoidmain(字符串[]args)引发IOException{
//提示用户并要求输入文件名。
System.out.print(“输入文件名:”);
扫描仪输入=新扫描仪(系统输入);
String file=in.next();//输入文件名
//获取输入并从文件中读取。
扫描仪输入=新扫描仪(新文件读取器(文件));
对于(int i=0;i<16;i++){
//读取输入文件。
System.out.println(input.nextLine());
}
< /代码> 您首先应该将每一行保存为一个整数。因为它是一个需要排序的列表,请考虑使用数组。
int[] array = new array[size];
for (int i = 0; i < size; i++) {
array[i] = input.nextLine();
}
这样做应该可以:
List<BigInteger> numbers = new ArrayList<>();
new Scanner(new FileReader(new File(""))).forEachRemaining(s -> numbers.add(new BigInteger(s)));
numbers.sort(Comparator.<BigInteger>comparingLong(i -> i.toString(2).chars().filter(b -> b == '1').count())
.thenComparing(Function.identity()));
numbers.forEach(i -> System.out.format("%d - %s%n", i, i.toString(2)));
List number=new ArrayList();
新扫描仪(新文件阅读器(新文件(“”))。forEachRemaining(s->numbers.add(new biginger));
numbers.sort(Comparator.comparingLong(i->i.toString(2).chars().filter(b->b=='1').count())
.然后比较(Function.identity());
numbers.forEach(i->System.out.format(“%d-%s%n”,i,i.toString(2));
您的输入变量类型是什么?它们只是一个整数列表吗?是的,它是一个文本文件中的整数列表“原始数字”和“其以10为基数的值”之间的区别是什么?
List<BigInteger> numbers = new ArrayList<>();
new Scanner(new FileReader(new File(""))).forEachRemaining(s -> numbers.add(new BigInteger(s)));
numbers.sort(Comparator.<BigInteger>comparingLong(i -> i.toString(2).chars().filter(b -> b == '1').count())
.thenComparing(Function.identity()));
numbers.forEach(i -> System.out.format("%d - %s%n", i, i.toString(2)));