即使使用本書提供的一些僞代碼作爲提示,本章也介紹瞭如何處理這個問題(本章是關於數組和的ArrayList)。順便說這不是功課,而我是自學。在數組列表中分組相同的數字(Big Java Ex 7.5)
問題
一個運行是相鄰的重複值的序列。寫一個程序 生成一個20個隨機擲骰子的序列,並打印出 值,通過將它們包括在括號中標記運行,如下所示: 1 2(5 5)3 1 2 4 3(2 2 2 2 )3 6(5 5)6 3 1
提示在預訂
設置一個布爾變量inRun爲false。
對於在陣列列表中的每個有效索引i如果inRun
如果值[i]是從先前值打印不同)inRun =假否則
如果值[i]是相同的以下 值打印(inRun =真打印值。[I]
什麼我不明白是怎樣的暗示是真正幫助假如我們有多個號碼,如2 2 2 2
慣於這只是像做(2 2) 2 2
繼承人什麼,我想到目前爲止
import java.util.ArrayList;
import java.util.Random;
class seq
{
private ArrayList<Integer> nums;
private Random randNum;
private boolean inRun;
public seq()
{
nums = new ArrayList<Integer>();
randNum = new Random();
inRun = false;
}
public void addToArrList()
{
for(int i = 0; i < 20 ; i++)
{
int addThisNum = randNum.nextInt(20)+1;
nums.add(addThisNum);
}
}
public void checkSides()
{
int count = 0;
for(int i = 0 ; i < nums.size(); i++)
{
if(nums.get(i) != nums.get(i-1))
{
inRun = false;
}
if(nums.get(i) == nums.get(i+1))
{
inRun = true;
}
}
}
public String toString()
{
String output = "Array is:";
if (output.)
}
}
另一種嘗試
import java.util.Random;
import java.util.ArrayList;
class Seq
{
private ArrayList<Integer> nums;
private Random randNum;
public Seq()
{
nums = new ArrayList<Integer>();
randNum = new Random();
}
public void fillArrList()
{
for (int i = 0 ; i < 20 ; i++)
{
int thisRandNum = randNum.nextInt(20)+1;
nums.add(thisRandNum);
}
}
public String toString() {
StringBuilder result = new StringBuilder();
boolean inRun = false;
for (int i = 0; i < nums.size(); i++) {
if (i < nums.size() - 1 && nums.get(i).equals(nums.get(i + 1))) {
if (!inRun) {
result.append("(");
}
result.append(nums.get(i));
inRun = true;
} else {
result.append(nums.get(i));
if (inRun) {
result.append(")");
}
inRun = false;
}
}
return result.toString();
}
}
public class Sequence{
public static void main(String [] args)
{
Seq seqObj = new Seq();
seqObj.fillArrList();
System.out.println(seqObj.toString());
}
}
輸出
85641520612614320473181113612
201362181920141020(1919)514920162914
ETC
這應該一直運行到最後一個值,因爲沒有'nums.get(20)'(數組和列表從索引0開始),所以最後一個值將超出界限。當然,這假定你正在添加/打印括號(在你顯示的代碼中沒有發生)。 –
是的,這只是我提出的想法。我只是想知道如何放置括號,我是否需要以某種方式將它們插入到數組列表中? –