2

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

我的程序应该做什么:

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

这是我到目前为止所拥有的:

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]);
    }
}
4

3 回答 3

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](第三个元素)结束的原因。

于 2013-10-27T22:32:26.567 回答
0

Java 不支持像这样的元组赋值

def (a,b,c) = "1,2,3".split(",")

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

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

在这里,a将是abc[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]);
于 2013-10-27T22:52:37.120 回答
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 的值替换为从用户输入中获得的值。

于 2013-10-27T23:03:40.647 回答