2015-10-28 24 views
1

這是我的第一個問題,我會盡力說清楚。如何在multiArray中定義一個值

我需要在職位上分配一個值。我有一個7行的二維數組(例如)。 根據某人給我的價值,我必須改變價值位置。

示例 如果有人給我:3.我必須按照以下順序放置這3個。

1 * * * * * * * * * 
2 * * * * * * * * * 
3 * * * * * * * * O 
4 * * * * * * * * O 
5 * * * * * * * * O 
6 * * * * * * * * * 
7 * * * * * * * * * 

如果有人給我:2

1 * * * * * * * * * 
2 * * * * * * * * * 
3 * * * * * * * * O 
4 * * * * * * * * O 
5 * * * * * * * * * 
6 * * * * * * * * * 
7 * * * * * * * * * 

我在數組的「中間」定義去一些起點。這些我確定。 起點在中間。 S =開始點

1 * * * * * * * * * 
2 * * * * * * * * * 
3 * * * * * * * * * 
4 S * * * * * * * * 
5 * * * * * * * * * 
6 * * * * * * * * * 
7 * * * * * * * * * 

問題是,當我必須在最終的陣列把「0」時,因爲「0」的數量是可變的並且必須居中 我有這些代碼:

var height = 7; 
var width = 9; 
var exit = 3; // or can be 2, or 4, 5 etc. 

var matrix = new Array(height); 
for (var i=0; i<height; i++) { 
    matrix[i] = new Array(width); 
    for (var j = 0; j<width; j++) { 
     matrix[i][j] = *; 
    } 
} 

function startPoint(height, matrix){ 
    // Se define el punto de partida 
    var startPoint = Math.round(height/2) -1; 
    document.write("el punto de partida es: "+startPoint) 
    matrix[startPoint][0] = 'S'; 
    return matrix 
} 

function finishPoint(exit, matrix){ 
    // punto de salida. 

    return matrix 
} 

我正在學習JavaScript,我發現了一個我無法解析的問題。我在努力,我不能有一個清晰的想法。

+0

的'*'在'矩陣[i] [j] = *'必須是一個字符串' 「*」'(必須有在控制檯的錯誤消息「未捕獲SyntaxError:Unexpected token *「,看看:[我怎樣才能調試我的JavaScript代碼?](http://stackoverflow.com/questions/988363/how-can-i-debug-my-javascript-code)) 。在頁面加載後不要使用'document.write',因爲這會擦除完整的文檔 - > ['document.write()'](https://developer.mozilla.org/en-US/docs /網絡/ API /文檔/寫)。你可以使用'console.log()'代替 – Andreas

+0

嘿,你是否得到它的工作?你嘗試過我的例子嗎? – AwokeKnowing

+0

非常感謝您的建議。我會審查你評論的文件。 –

回答

0

你只需要找到中心(高度/ 2)並減去HALF「退出」的高度。所以如果出口高度爲4,那麼2應該在一邊,另一邊是2,所以你從中心減去2。

var height = 7; 
 
var width = 9; 
 
var exit = 3; // or can be 2, or 4, 5 etc. 
 

 
var matrix = new Array(height); 
 
for (var i=0; i<height; i++) { 
 
    matrix[i] = new Array(width); 
 
    for (var j = 0; j<width; j++) { 
 
     matrix[i][j] = '*'; 
 
    } 
 
} 
 

 
function startPoint(height, matrix){ 
 
    // Se define el punto de partida 
 
    var startPoint = Math.round(height/2)-1 ; 
 
    document.body.innerHTML+=("el punto de partida es: "+startPoint+'<br>') 
 
    matrix[startPoint][0] = 'S'; 
 
    return matrix 
 
} 
 

 
function finishPoint(exit, matrix){ 
 
    // punto de salida. 
 
    var startPoint=Math.round(height/2-(exit/2)) 
 
    for(var i=0;i<exit;i++) 
 
     matrix[startPoint+i][width-1]='0' 
 
    return matrix 
 
} 
 

 
matrix=startPoint(height,matrix) 
 
matrix=finishPoint(exit,matrix) 
 

 
for(var i=0;i<height;i++){ 
 
    for(var j=0;j<width;j++) 
 
    document.body.innerHTML+=matrix[i][j] 
 
    document.body.innerHTML+='<br>' 
 
} 
 

 
document.body.innerHTML+='la salida es de altura: '+exit+ ' entonces buscamos el centro ('+(height/2)+') y restamos mitad de la altura ('+exit/2+')'

+0

非常感謝你的回答。這對我來說是非常有用的。 –

0

要居中k值的數組中s值(其中s >= k)的空間可以使用式

var x = Math.floor((s - k)/2); 

k值存儲在xx+1,...,x+k-1

公式的想法是

  1. 計算有多少免費名額剩餘(即s - k
  2. 拆分這兩個給他們一半的每一方
當然

如果免費地方的數量變得很奇怪,你就不能把它們分成兩半,一方會得到更多的收益。使用Math.floor負責調整,使第一面的元素少一點。

+0

我會冥想你提供給我的信息,我會證明這一點。謝謝! –

相關問題