java 从控制台接收若干个整数,排序并输出.如何做?

如题所述

由于不知道具体有几个整数,总体来说有两种方法,第一种是读取一行,然后把这一行输入转成数组。第二种方法是读到某个标志位(比如-1)结束。代码如下:

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
import java.io.IOException;

public class BasicInput {
public static void main(String[] args) {

// int[] arr = readLine(); //方法一
int[] arr = readToFlag();//方法二
Arrays.sort(arr);
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+" ");
}
System.out.println();
}

public static int[] readLine(){
String str = "";
try {
System.out.println("属于一行整数,中间用空格隔开。");
// 在Java当中,用户输入要通过InputStream(输入流)来获取。
// System.in就是系统的输入流。缺省情况下这个输入流连接到控制台(命令行)。
// InputStreamReader就是用来读取InputStream的类。
InputStreamReader is_reader = new InputStreamReader(System.in);
// 通常使用BufferedReader来读取InputStream中的字符串内容。
// BufferedReader可以一次读取一行。
str = new BufferedReader(is_reader).readLine();
is_reader.close();

} catch (IOException e) {
e.printStackTrace();
}
String [] strArr = str.split(" ");
int [] arr = new int [strArr.length];
for(int i=0;i<strArr.length;i++){
arr[i] = Integer.parseInt(strArr[i]);
}

return arr;
}

public static int[] readToFlag(){
List<Integer> list = new ArrayList<Integer>();
Scanner input=new Scanner(System.in);
System.out.println("请输入多个数值,输入-1表示输入结束");
int tmp=input.nextInt();//输入一个正整数
while(tmp!=-1){
list.add(tmp);
tmp=input.nextInt();
}
input.close();
int [] arr = new int [list.size()];
for(int i=0;i<list.size();i++){
arr[i] = list.get(i);
}
return arr;
}
}

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-09-09
import java.lang.*;
import java.util.Arrays;
public class TestExercise
{
// 此方法实现从控制台读入若干数据,存入数组
public void input(int[] arr)
{
System.out.println("请输入5个整数,每输入一个请按回车键:");
try {
byte[] buf = new
byte[20];
for (int i = 0; i < arr.length; i++)
{
System.in.read(buf);
String str = new String(buf);
arr[i] =
Integer.parseInt(str.trim());
}
} catch (Exception e)
{
System.out.println("程序遇到异常,即将终止");
System.exit(0);
}
}

//将数组元素逆序输出
public
void converseOutput(int[] arr){
System.out.println("逆序输出数组元素:");
for(int
i=arr.length-1;i>=0;i--)
System.out.print(arr[i]+"
");
System.out.println();
}

//将数组元素降序排列
public void
descentSort(int[] arr){
Arrays.sort(arr);
int[] array=new
int[5];
for(int
i=0;i<arr.length;i++)
array[i]=arr[arr.length-1-i];
for(int
i=0;i<arr.length;i++)
arr[i]=array[i];
}
//
此方法实现在控制台显示数组的各元素
public void echo(int[] arr)
{
System.out.println("数组各元素如下:");
for (int i = 0; i < arr.length; i++)
{
System.out.print(arr[i] + "
");
}
System.out.println();
}

public static void main(String[]
args){
TestExercise t=new TestExercise();
int[] arr=new
int[5];
t.input(arr);
t.converseOutput(arr);
t.descentSort(arr);
t.echo(arr);
}
}本回答被提问者采纳

Java从控制台录入8个数字,并且按从小到大排序?
用冒泡排序法,我只写核心的那块给你,其实就是一个双重循环。for(int i=0;i<arr.length-1;i++){ for(int j=0;j<arr.length-1;j++){ int temp = 0;if(arr[j]>arr[i]){ temp = arr[j];arr[j]=arr[j+1];arr[j+1] = temp;} } } ...

求用Java写的:输入N个整数,按照输入的顺序建立单链表存储,并遍历所建立...
false : true;}public static void main(String[] args) {Node first = null; \/\/记录第一个节点,在后面遍历的时候使用Node node = null; \/\/保存当前输入的节点使用Scanner in = new Scanner(System.in); \/\/用于控制台输入,Ctrk+Z结束输入while(in.hasNext()) {int v = in.nextInt();N...

java从键盘输入n个数,排序输出
public static void main(String [] args){ Scanner read = new Scanner(System.in); \/\/创建Scanner对象read 接受从控制台输入 int n; \/\/元素个数 System.out.println("请输入数组元素个数");n = read.nextInt(); \/\/调用Scanner类中的方法.nextInt() 对象名.方法名 int [ ] arr;arr =...

编写java程序,从控制台输入10个整数,计算出输入数字之和,并打印输出统...
java程序如下:(java文件名要和类名一致)import java.util.Scanner;class compute{ public static void main(String[] args) { Scanner input=new Scanner(System.in);\/\/ 回车键输入下一个数字 int sum=0;for(int i=0;i<10;++i){ int num=input.nextInt();sum+=num;} System.out.printf...

java控制台输入多行整数并输出,结束条件是回车。满意的话再加100分_百...
import java.io.BufferedReader;import java.io.InputStreamReader;public class Main {public static void main(String[] args) throws Exception{BufferedReader br = new BufferedReader(new InputStreamReader(System.in));while(true){String str = br.readLine();System.out.println(str);break;} ...

java从键盘读入10个整数,并对它们进行排序,按由大到小的顺序从控制台...
请考虑使用快速排序 例如:public class QuickSort { private static int[] input = { 3, 5, 3, 76, 45, 23, 7, 44, 25, 54 };private static void exchange(int from, int to) { int temp = input[from];input[from] = input[to];input[to] = temp;} private static int ...

用Java编写程序在控制台窗口中提示输入两个整数,然后接收这两个整数,并...
import java.util.Scanner;public class PrintInt { public static void main(String[] args) { String a,b;Scanner scan = new Scanner(System.in);while(true){ System.out.println("输入第一个整数 : ");a = scan.next();System.out.println("输入第二个整数 :");b = scan.next()...

java 如何在控制台输出信息?
三个步骤 第一步:首先编写JAVA类 public class Test{} 这个类里写个main方法 public class Test{ public static void main(String[] args){ } } 这个main方法里写一个输出语句 public class Test{ public static void main(String[] args){ ystem.out.println("Hello World");} } 第二步:...

...输入三个整数,按照由大到小的顺序进行输出。”求程序代码:
* 由控制台输入三个数,并升序排序 * * @author young * *\/public class Example {public static void main(String[] args) {int num1, num2, num3;Scanner sc = new Scanner(System.in);System.out.println("输入第一个数:");num1 = sc.nextInt();System.out.println("输入第二个...

从控制台输入任意4位整数,输出该数字的各位数字之和。(java编程)
System.out.println("请输入一个4位自然数:");if(scanner.hasNext("[1-9]\\\\d{3}?")){ int x = Integer.parseInt(scanner.next());System.out.println(x\/1000 + (x\/100 % 10) + (x\/10 %10) + (x %10));} else { System.err.println("去冲个冷水澡清醒一下吧!");} scan...

相似回答