Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用于循环和对象控制_Java_For Loop - Fatal编程技术网

Java 用于循环和对象控制

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

我正在尝试向数组中添加元素。数组的元素属于名为variable的自定义类。在有问题的for循环中,它基本上添加了试图在整个循环中添加的最后一个元素。任何帮助都将不胜感激

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函数中删除
静态
限定符。

这是作业吗?如果是,你应该这样标记。请描述预期行为这是作业吗?如果是,你应该这样标记。请描述预期行为