JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Java 新手區  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友    訂閱主題
reply to topicthreaded modego to previous topicgo to next topic
本主題所含的標籤
作者 [發問]如何在單維隨機陣列中插入數值
vul3xup699





發文: 4
積分: 0
於 2019-01-06 09:48 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
設一組0-1000的隨機陣列(10個)後按照升序排列
再輸入一個數字添加至陣列中並按照升序排列

我想了兩種解法 第一種是把數值輸入在第11個後按照升序排列
另一種是直接判斷輸入數值的大小,直接插入陣列,不須重新升序排列
不過兩種解法都是顯示 java.lang.ArrayIndexOutOfBoundsException
剛學陣列不知道怎麼寫才是正確的
以下是代碼:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
import java.util.Arrays;
import java.util.Scanner;
 
public class practice01
{
  public static void main(String[] agrs)
  {
    
//設定陣列變量
int count = 10 ; 
int []num = new int[count]; 
 
//設定0-1000隨機陣列參數
for (int i = 0; i < num.length; i++) {
  num[i] = (int)(Math.random()*10000%1001);
}
//顯示出隨機陣列參數
for (int i = 0; i < num.length; i++) {
System.out.print(num[i]+",");
}
//空行
System.out.println();
 
//升序排列後的陣列
Arrays.sort(num);
for (int i = 0; i < num.length; i++) {
System.out.print(num[i]+",");
}
 
//空行
System.out.println();
 
System.out.println("請輸入插入陣列的數字");
int input = new Scanner(System.in).nextInt();
 
//---------------------------------------------------------------以下為問題代碼
//----------------------------------------------------------------第一種解法
//陣列總長度+1
//陣列中的第11個數字等於輸入的值
//升序排列
//輸出
 
count++ ;                    
input=num[count ];                
Arrays.sort(num);                
for (int i = 0; i < count; i++) {
System.out.print(num[i]);                         
}        
//-----------------------------------------------------------------第二種解法
//陣列總長度+1
//先求出輸入的值在陣列中位置
//如果新增的值等於小於num[i]的話  i值往後移   
//index取代原來的i值  
//輸出
 
//  count++ ;  
//      int index = 0 ;                                                             
//  for (int i=index; i < count; i++) {                                
//  if(input<=num[i]){                       
//  num[i+1] = num[i] ;                                    
//  index =  i ;                                              
//  }
//}
//    for (int i = 0; i < count; i++) {                                     
//  System.out.print(num[i]);  
//}
 
}}


reply to postreply to post
作者 Re:[發問]如何在單維隨機陣列中插入數值 [Re:vul3xup699]
frankiewu





發文: 11
積分: 0
於 2019-01-07 01:43 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
1
2
3
4
5
6
//設定陣列變量
int count = 10 ; 
int []num = new int[count];   //你已宣告長度    
~~~~~~~
count++ ;      //你去變更長度                 
input=num[count ];     


length變數宣告為final,因此陣列物件產生後,就不能再變更其長度了
1
2
3
4
5
6
7
public class ArrayExample {
    public static void main(String[] argv) {
        int[] x; // x is a reference to int[]
        x = new int[10]; // 利用new指令產生物件
        x.length = 1; // Compile Error
    }
}

請參考
https://programming.im.ncnu.edu.tw/J_Chapter3.htm

至於解法 有不設定長度的陣列 ArrayList
http://codecrazer.blogspot.com/2017/05/arraylist_12.html


reply to postreply to post
作者 Re:[發問]如何在單維隨機陣列中插入數值 [Re:frankiewu]
vul3xup699





發文: 4
積分: 0
於 2019-01-07 15:05 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
謝謝解答
ArrayList還沒有學到
Smile


reply to postreply to post
作者 Re:[發問]如何在單維隨機陣列中插入數值 [Re:vul3xup699]
javaX





發文: 188
積分: 0
於 2019-01-08 03:54 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
排序時 Arrays.sort 還方便使用的
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public class Array20190108_2 {
 
    public static void main(String[] args) {
 
        int dataCount = 10;
        int[] totalArray = new int[1000];
        for (int i = 0; i < dataCount; i++) {
            totalArray[i] = (int) (Math.random() * 1000 + 1);
        }
        Arrays.sort(totalArray, 0, dataCount);
        for (int i = 0; i < dataCount; i++) {
            System.out.print(totalArray[i] + " ");
        }
        System.out.println();
        
        int newNumber = 654;
        totalArray[dataCount] = newNumber;
        dataCount++;
        Arrays.sort(totalArray, 0, dataCount);
        for (int i = 0; i < dataCount; i++) {
            System.out.print(totalArray[i] + " ");
        }
    }
 
}
 


reply to postreply to post
教育部:要如何保證畢業即就業
經濟部:所以公司都是我開的
財政部:發前單位請不要幻想能春風化雨
行政院:為什麼該單位發錢的時候都想去當老師
作者 Re:[發問]如何在單維隨機陣列中插入數值 [Re:javaX]
vul3xup699





發文: 4
積分: 0
於 2019-01-08 07:26 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
明白了 要先設一個陣列長度最少不小於11的陣列 再利用Array.sort升序顯示前面10個0~1000隨機數字
再指定新增的數字位在第10個後用Array.sort重新進行升序排列 顯示前面11個數字

謝謝大大的指教 我知道我的代碼錯在什麼地方了


reply to postreply to post
» JWorld@TW »  Java 新手區

reply to topicthreaded modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8