Java 用于循环和对象控制
我正在尝试向数组中添加元素。数组的元素属于名为variable的自定义类。在有问题的for循环中,它基本上添加了试图在整个循环中添加的最后一个元素。任何帮助都将不胜感激Java 用于循环和对象控制,java,for-loop,Java,For Loop,我正在尝试向数组中添加元素。数组的元素属于名为variable的自定义类。在有问题的for循环中,它基本上添加了试图在整个循环中添加的最后一个元素。任何帮助都将不胜感激 import java.util.*; public class ThiefsDilemma2{ public static void main(String[] args){ ArrayList values = new ArrayList(args.length/2); Valuable[] array
import java.util.*;
public class ThiefsDilemma2{
public static void main(String[] args){
ArrayList values = new ArrayList(args.length/2);
Valuable[] array = new Valuable[args.length/2];
if(args.length%2 ==1){
int weight = Integer.parseInt(args[args.length-1]);
boolean room = true;
int tracker = 0;
//problem!!!! Adds the last element throughout the loop
for(int i = 0; i < args.length/2; i++){
array[i] = new Valuable(
Integer.parseInt(args[args.length/2+i]),
Integer.parseInt(args[i]));
}
for(int i = 0; i < args.length/2; i++){
System.out.println(array[i]);
}
while(values.size() > 0 && room){
int lightest = 100000;
double value = 0.0;
int index = 0;
int counter = 0;
for(Object p: values){
Valuable test = (Valuable)p;
//System.out.println(test);
if(test.getWeight() < lightest && !test.beenUsed()){
lightest = test.getWeight();
//System.out.println(lightest);
}
if(test.getValue() > value && !test.beenUsed()){
index = counter;
value = test.getValue();
//System.out.println(value);
}
else if(test.getValue() == value || !test.beenUsed()){
if(test.getWeight() <= test.getWeight()){
index = counter;
}
}
counter++;
}
//System.out.println(counter + " " + lightest + " " + value);
Valuable p = ((Valuable)(values.get(index)));
p.used();
if(lightest > weight){ room = false;}
else{
if(p.getWeight() <= weight){
weight -= p.getWeight();
}
System.out.println(p);
values.remove(p);
}
}
}
}
public static class Valuable{
private static double value;
private static int weight;
private static boolean used = false;
public Valuable(int top, int bottum){
value = ((double)top/(double)bottum);
weight = bottum;
//System.out.println(weight + " " + value);
}
public static double getValue(){
return value;
}
public static int getWeight(){
return weight;
}
public String toString(){
return value + " " + weight;
}
public static void used(){
used = true;
}
public static boolean beenUsed(){
return used;
}
}
}
import java.util.*;
公共类ThiefsDilemma2{
公共静态void main(字符串[]args){
ArrayList值=新的ArrayList(参数长度/2);
VALUE[]数组=新的VALUE[args.length/2];
如果(参数长度%2==1){
int-weight=Integer.parseInt(args[args.length-1]);
布尔房间=真;
int-tracker=0;
//问题!!!!在整个循环中添加最后一个元素
对于(int i=0;i0&&room){
int最轻=100000;
双值=0.0;
int指数=0;
int计数器=0;
用于(对象p:值){
有价值检验=(有价值)p;
//系统输出打印LN(测试);
if(test.getWeight()value&&!test.beenUsed()){
指数=计数器;
value=test.getValue();
//系统输出打印项次(值);
}
else if(test.getValue()==value | |!test.beenUsed()){
if(test.getWeight()weight){room=false;}
否则{
如果(p.getWeight()问题是有价值的
的所有数据成员都是静态的
。这意味着它们由类的所有实例共享:
private static double value;
private static int weight;
private static boolean used = false;
从数据成员和getter函数中删除静态
限定符。问题是有价值的
的所有数据成员都是静态
。这意味着它们由类的所有实例共享:
private static double value;
private static int weight;
private static boolean used = false;
从数据成员和getter函数中删除静态
限定符。这是作业吗?如果是,你应该这样标记。请描述预期行为这是作业吗?如果是,你应该这样标记。请描述预期行为