我有boolean arraylist
,其中有100个谬误。
我想更改arraylist中的每个x值。 x = 1
也是如此,如果[false,true,false,true,false]
,则每个其他值都会更改x = 2
,每两个值都会发生变化。我已经工作了几个小时,我仍然无法得到它。在这个网站上询问是我的最后一个选择。
这是我的......
public void changeValues(int x){
int d = x + 1;
x-=1;
int i = 0;
while (x <= arrayList.size()){
if (arrayList.get(x) == false){
arrayList.add(x,true);
} else {
arrayList.add(x,false);
}
x+=d;
if(x == arrayList.size()){
break;
}
}
System.out.print(arrayList);
}
答案 0 :(得分:2)
首先,add
在指定的索引之后添加元素,而不是设置它。
其次你混合x和循环索引变量会导致完全错误的结果(我假设它抛出ArrayIndexOutOfBoundException
)。
实施实际上非常简单:
for (int i = x; i < arrayList.size(); i += x+1) {
arrayList.set(i, true);
// or arrayList.set(i, !arrayList.get(i)) if you want to negate the value
}
答案 1 :(得分:1)
class CmsController extends Controller
{
public $enableCsrfValidation = false;
public $layout="listing";
public function behaviors()
{
.........
}
}
然而要测试代码,但我想这正是你要找的。希望它有所帮助:)
答案 2 :(得分:0)
使用Set而不是add。
添加将指定的元素追加到此列表的末尾或指定的索引处。
Set将替换它。
答案 3 :(得分:0)
你必须修改值而不是添加新的val。使用以下代码以获得上述格式的输出
public void changeValues(int x){
ArrayList<Boolean> list = new ArrayList<Boolean>();
//From question -> that is filled with 100 falses.
list.add(false);
int listSize = list.size();
for (int i = x; i < listSize; i += x + 1) {
list.set(i, true); //Works for x=1
if (x == 2 && i+1 < listSize) {
list.set(i + 1, true); //Works for x=2
}
}
System.out.println(list);
}
x=1
[false, true, false, true, false]
x=2
[false, false, true, true, false]
答案 4 :(得分:0)
使用Java 8,您可以通过检查IntStream
中是否index % x == 0
来制定解决方案:
final int size = 100;
final int gap = x + 1;
List<Boolean> list = IntStream.rangeClosed(1, size)
.mapToObj(num -> num % gap == 0)
.collect(Collectors.toList());
System.out.println(list);
答案 5 :(得分:0)
(我建议始终发布MCVE)
oauthswift = OAuth2Swift(
consumerKey: "********",
consumerSecret: "********",
authorizeUrl: "your authorisation url",
responseType: "token"
)
let handle = oauthswift.authorize(
withCallbackURL: URL(string: "oauth-swift://oauth-callback/fitbit")!,
scope: "your application scope", state:"state",
success: { credential, response, parameters in
print(credential.oauth_token)
},
failure: { error in
print(error.localizedDescription)
}
)
答案 6 :(得分:0)
请检查一下,我认为它会像你要找的那样工作:
public class ChangeValue{
public static void main(String[] args) {
List arrayList = new ArrayList<Boolean>();
for (int i = 0; i < 100; i++) {
arrayList.add(false);
}
System.out.println("Before:" + arrayList);
for (int i = 0; i < 100; i++) {
arrayList.add(i,true);
}
new ChangeValue().changeValues(1, arrayList);
}
public void changeValues(int x, List<Boolean> arrayList) {
int d = x+1;
x -= x;
System.out.println("ff:" + arrayList.size());
while (x <= arrayList.size()) {
if (arrayList.get(x) == true) {
arrayList.add(x, false);
}
x += d;
if (x == arrayList.size()) {
break;
}
}
System.out.print("After:" + arrayList);
}
public static void main(String[] args) {
List arrayList = new ArrayList<Boolean>();
for (int i = 0; i < 100; i++) {
arrayList.add(false);
}
System.out.println("Before:" + arrayList);
for (int i = 0; i < 100; i++) {
arrayList.add(i,true);
}
new StateFlowerBird().changeValues(1, arrayList);
}
public void changeValues(int x, List<Boolean> arrayList) {
int d = x+1;
x -= x;
System.out.println("ff:" + arrayList.size());
while (x <= arrayList.size()) {
if (arrayList.get(x) == true) {
arrayList.add(x, false);
}
x += d;
if (x == arrayList.size()) {
break;
}
}
System.out.print("After:" + arrayList);
}
}