动态变量

时间:2013-10-27 22:16:57

标签: java arrays variables

我想动态分配变量,但我不知道如何做到这一点。

我的计划应该做什么:

  

“编写程序让用户输入三个边长,并确定该图是否为三角形。”

这是我到目前为止所做的:

package triangle;
import javax.swing.JOptionPane;
public class Triangle {
    public static void main(String[] args) {
        String x = JOptionPane.showInputDialog("Please enter the side lengths of a     triangle with each side \nseparated with a ',' and without spaces. (eg. 1,2,3)");
        x += ",";
        int y = -1, a = 0; 
        double z;
        for(int i = 0; i < x.length(); i++)
        {
            if(x.charAt(i) == ',')
            {
                z = Double.parseDouble(x.substring((y + 1), i));
                y = i;
                a += z;
            }
        }
    }
}

我喜欢做的是在if语句中使用它:

int a++;
z(a) = Double.parseDouble(x.substring((y + 1), i));

但是我发现这不起作用,我需要某种数组。可悲的是,我的在线课程尚未启动数组,而且在我自己的学习中我还没有掌握它们。

我想制作3个变量(z1,z2,z3),并在if语句中为每个变量分配一个整数。

编辑: 这里有一些修改后的代码,现在可以按我想要的方式工作。希望这对未来的其他人有所帮助!

package triangle;
import javax.swing.JOptionPane;
public class Triangle {
    public static void main(String[] args) {
        String x = JOptionPane.showInputDialog("Please enter the side lengths of a     triangle with each side \nseparated with a ',' and without spaces. (eg. 1,2,3)");
        x += ",";
        int y = -1, a = 0; 
        Double[] z = new Double[3];
        for(int i = 0; i < x.length(); i++)
        {
            if(x.charAt(i) == ',')
            {
                z[a] = Double.parseDouble(x.substring((y + 1), i));
                y = i;
                a++;
            }
        }
        //Some test code to see if it was working
        System.out.println(z[0]);
        System.out.println(z[1]);
        System.out.println(z[2]);
    }
}

3 个答案:

答案 0 :(得分:1)

您不需要使用数组,特别是您尚未介绍它们。您可以简单地使用Scanner类,并执行与

类似的操作
Scanner in = new Scanner(System.in); // this will read from the standard system input
System.out.println("Please enter three lengths of sides: ");
int a = in.nextInt();
int b = in.nextInt();
int c = in.nextInt();

并写一些逻辑(我猜这是你的作业的重点),检查这个数字是否是一个三角形。

如果您想使用数组,可以通过执行以下操作声明:

int[] sidesLenghtsArray = new int[3]; 

然后您可以简单地引用您的数组元素,而不是引用三个不同的int变量:

int[0] = in.nextInt();
int[1] = in.nextInt();
int[2] = in.nextInt();

请记住 - 括号中的数字是数组所具有的元素数,但是引用这些元素,从0开始计数。这就是为什么我们从int[0]开始(第一个元素)并结束int[2](第3个元素)。

答案 1 :(得分:0)

Java不支持像

这样的元组赋值
def (a,b,c) = "1,2,3".split(",")

可以使用以下代码在Java 8中执行此操作:

int[] abc = Arrays.stream("1,2,3".split(",")).mapToInt(Integer::parseInt).toArray();

此处aabc[0]babc[1]

Java 7中的类似代码可能是这样的:

String[] abc = "1,2,3".split(",");

int a = Integer.parseInt(a[0]);
int b = Integer.parseInt(a[1]);
int c = Integer.parseInt(a[2]);

答案 2 :(得分:0)

最基本的想法是,在每个三角形中添加两边的长度时,得到的长度应该大于剩余边的长度。假设a,b,c是三角形的边。

public static void main(String[] args){
    int a=3, b=4, c=5;

    if(a+b > c && a+c>b && c+b>a){
        System.out.println("This is a valid trianlge");
    }
    else{
        System.out.println("This is not a valid triangle");
    }
}

确保使用从用户输入中获得的值替换a,b和c的值。