java输入数据插入if_java编程,从键盘录入10个整数数据,将每次录入的数据按从小到大的顺序插入到数组中。...
匿名用戶
1級(jí)
2015-06-06 回答
樓主你好,先說(shuō)一下我對(duì)這道題目的認(rèn)識(shí)吧。
1、輸入10個(gè)數(shù),一次按順序插入。核心考察的應(yīng)該是2點(diǎn)
1) 給定一個(gè)數(shù)組和一個(gè)整數(shù)n,找到這個(gè)數(shù)應(yīng)該插入的位置。
2) 插入這個(gè)數(shù),其實(shí)就是從這個(gè)位置往后的所有元素后移一位即可。
2、你的代碼用的java的集合。我想這道題目的初衷是考察是1中的2點(diǎn)。如果用集合list等元素的話。那么就失去了數(shù)組移動(dòng)這個(gè)知識(shí)點(diǎn)的考察。
3、我是用數(shù)組實(shí)現(xiàn)的。集合應(yīng)該更簡(jiǎn)單。
【執(zhí)行效果,考慮了插入時(shí)候的大小問(wèn)題】
請(qǐng)輸入第1個(gè)整數(shù)
5
第1輪數(shù)組情況如下:
5 0 0 0 0 0 0 0 0 0
請(qǐng)輸入第2個(gè)整數(shù)
1
位置0
第2輪數(shù)組情況如下:
1 5 0 0 0 0 0 0 0 0
請(qǐng)輸入第3個(gè)整數(shù)
3
位置1
第3輪數(shù)組情況如下:
1 3 5 0 0 0 0 0 0 0
請(qǐng)輸入第4個(gè)整數(shù)
8
位置3
第4輪數(shù)組情況如下:
1 3 5 8 0 0 0 0 0 0
請(qǐng)輸入第5個(gè)整數(shù)
9
位置4
第5輪數(shù)組情況如下:
1 3 5 8 9 0 0 0 0 0
請(qǐng)輸入第6個(gè)整數(shù)
2
位置1
第6輪數(shù)組情況如下:
1 2 3 5 8 9 0 0 0 0
請(qǐng)輸入第7個(gè)整數(shù)
24
位置6
第7輪數(shù)組情況如下:
1 2 3 5 8 9 24 0 0 0
請(qǐng)輸入第8個(gè)整數(shù)
18
位置6
第8輪數(shù)組情況如下:
1 2 3 5 8 9 18 24 0 0
請(qǐng)輸入第9個(gè)整數(shù)
20
位置7
第9輪數(shù)組情況如下:
1 2 3 5 8 9 18 20 24 0
請(qǐng)輸入第10個(gè)整數(shù)
25
位置9
第10輪數(shù)組情況如下:
1 2 3 5 8 9 18 20 24 25
【源代碼】
import java.util.Scanner;
public class ZhuLei
{
//思路:定義一個(gè)程度為10的整型數(shù)組。一次錄入10個(gè)整數(shù)。
//每個(gè)整數(shù),找到自己該插入的位置,然后后面的元素全部后移即可。
public static void main(String[] args)
{
int[] a=new int[10];
int count=1;
Scanner scan=new Scanner(System.in);
while(count<=10)
{
System.out.println("請(qǐng)輸入第"+count+"個(gè)整數(shù)");
int x=scan.nextInt();//獲取一個(gè)整數(shù)
if(count==1)//第一個(gè)數(shù)直接放在a【0】上
{
a[0]=x;
}
else
{
int insertpos=getPos(a,x,count);
System.out.println("位置"+insertpos);
//移動(dòng)元素
moveArray(a,insertpos);
a[insertpos]=x;
}
System.out.println("第"+count+"輪數(shù)組情況如下:");
printArray(a);
count++;
}
}
//給定一個(gè)數(shù)組和一個(gè)數(shù),找出這個(gè)數(shù)該放的位置
public static int getPos(int[] a,int n,int count)
{
int pos=-1;
int i=0;
for(i=0;i
{
if(n<=a[i])//一旦發(fā)現(xiàn)那個(gè)元素比我這個(gè)大,那么就找到該插入的位置了。
{
pos=i;
break;
}
}
if(i==count)//如果是count輪,且是目前最大的數(shù),肯定就是在這個(gè)位置了,但數(shù)組是count-1。
{
pos=count-1;
}
return pos;
}
//給定一個(gè)數(shù)組和一個(gè)下標(biāo),從下標(biāo)開(kāi)始所有元素后移動(dòng)1位
public static void moveArray(int[] a,int pos)
{
for(int i=a.length-1;i>pos;i--)
{
a[i]=a[i-1];
}
}
//給定一個(gè)數(shù)組,打印每個(gè)元素
public static void printArray(int [] a)
{
for(int k:a)
{
System.out.print(k+" ");
}
System.out.println();
}
}
【思路說(shuō)明】
1、定義一個(gè)10個(gè)數(shù)組的元素。
2、用一個(gè)循環(huán),來(lái)實(shí)現(xiàn)10次輸入10個(gè)整數(shù)(沒(méi)考慮容錯(cuò),即不是整數(shù)的情況)
3、每次輸入一個(gè)數(shù)X。
如果是第一個(gè),就直接賦值給a【0】
否則:
調(diào)用下面的一個(gè)一個(gè)函數(shù),返回這個(gè)數(shù)該插入的位置
然后移動(dòng)元素
最后把輸入的這個(gè)數(shù)X復(fù)制到數(shù)組的這個(gè)空位置。即可
4、函數(shù)說(shuō)明:
4.1 getPos()函數(shù),第幾輪,就看前幾個(gè),哪一個(gè)比這個(gè)X大,那么就停止,這個(gè)地方就是它該插入的地方,count全部看完,肯定是X目前最大,插入到count-1即可
4.2 moveArray(),這個(gè)簡(jiǎn)單,從后往前把元素后移一位,知道該插入的那個(gè)位置。
4.3 printArray(),打印數(shù)組,這樣可以每次看看效果
【你第代碼】
你的思路我沒(méi)有時(shí)間看,但是警告就是List。
他的意思是,list好比一個(gè)口袋,但是只能裝整數(shù)。這個(gè)問(wèn)題不大。
好運(yùn)!
總結(jié)
以上是生活随笔為你收集整理的java输入数据插入if_java编程,从键盘录入10个整数数据,将每次录入的数据按从小到大的顺序插入到数组中。...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 冲上热搜!知名男星被曝长期进行“情绪操控
- 下一篇: 威马EX5郑州充电站起火自燃 此前曾因强