Java 如何从array JOptionPane中获取内容并将其用于计算

Java 如何从array JOptionPane中获取内容并将其用于计算,java,arrays,Java,Arrays,我在一个循环中有一个数组和两个JoptionPane。我想知道,如何使用输入的值进行循环外的计算 这是示例代码 String[] test = new String[2]; int[] test = new int[2]; for(int i = 1; i<2; i++) { String t1 = JOptionPane.showInputDialog(null,"enter any string value"); int t2 = JOptio

我在一个循环中有一个数组和两个JoptionPane。我想知道,如何使用输入的值进行循环外的计算

这是示例代码

   String[] test = new String[2];
   int[] test = new int[2];

   for(int i = 1; i<2; i++)
   {
    String t1 = JOptionPane.showInputDialog(null,"enter any string value");
    int t2 = JOptionPane.showInputDialog(null,"enter integer value");

    test1[i] = t1;
    test2[i] = t2;

   }
现在类似于value=t2+10*3,但显然这不起作用

我该怎么办

我找到了这个

我会查看链接以获得解释

import javax.script.ScriptEngineManager;
import javax.script.ScriptEngine;

public class Test {
    public static void main(String[] args) throws Exception{
    ScriptEngineManager mgr = new ScriptEngineManager();
    ScriptEngine engine = mgr.getEngineByName("JavaScript");
    String foo = "40+2";
    System.out.println(engine.eval(foo));
    } 
}

希望这有帮助

实际上,您不需要在循环外声明a和b,因为您没有在循环外访问它们。当您计算平均值时,您需要计算所有年龄,因此将变量放在外侧并将年龄添加到其中。并且不需要将年龄存储在字符串中。年龄使用int数组

double agecount = 0;
在java中,int/int==int。如果你把一个int除以一个int,你会得到一个int值,但是对于平均int值,你可以用double来代替。因为这个原因,放一个变量double agecount。你必须把一个int转换成double

不要忘了java数组索引是基于零的。您将第一个元素留空[默认值]

for (int i =1; i < names.length; i++)

使用Integer.parseIntt1这将把字符串t1转换为整数,然后您可以对其执行任何计算it@Nabin谢谢你的回答,我也这么认为,但是如果我在循环之外这样做,我会得到错误:找不到符号。我在循环外做了Integer.parseIntt1,并添加了int test3=t1*5我读了这篇文章www.stackoverflow.com/questions/10454345/cannot-find-symbol-error-when-use-a-for-loop,我意识到我做不到,因为t1和t2在循环内声明,只能在循环中使用,“但是我怎么才能绕过它呢?”我不能,因为我需要它循环5次,这个问题。如果我把它移出循环,我需要手动做5次这个问题,这是低效的。我试图制作一个程序来实现这个功能:有一个数组用于两个inputdialogs,一个循环用于将inputdialogs循环一定次数,第二个循环用于显示信息。我希望其中一个inputdialogs在循环外计算,并在第二个循环中显示为result@Xylus为什么值=t2+10*3??10和3是什么?是用户输入值吗?在帖子中添加一点解释以使其成为更好的答案不会有什么坏处。解释它是如何解决OP的问题的,它的工作方式是运行JavaScript。据我所知,JavaScript可以从字符串运行数学问题。这里的引擎运行JavaScript,因此可以计算你的等式;你到底是怎么做的?将ages数组信息添加到agecount?我为什么不计算年龄+年龄[i]如果是的话。或者+=表示相加等于?最后是names.length之前的double,为什么?@Xylus我编辑了答案double意味着施法。但是如果你不知道,我认为最好不要使用它。相反,声明double agecount=0;变量为double。为什么用double代替int是一个整数值,平均值没有浮点数。你可以通过更改double agecount=0来检查它;到int agecount=0。例如,根据我的示例输出,如果我使用int-agecount,我将得到22作为平均值,而不是22.6。这就是为什么要加倍need@Xylus年龄计数+=年龄[i];将所有年龄添加到agecount变量。因为要计算平均值,需要所有年龄的总和和长度。在代码中,您将无法获得平均值。您将得到的是最后一个人的年龄除以人数。。年龄计数+=年龄[i];是agecount=agecount+ages[i]的缩写形式;它的作用是把每个人的年龄加在一个变量中,最后你会得到所有年龄的人的总数
for (int i =1; i < names.length; i++)
for (int i = 0; i < names.length; i++)
public static void users() {

        String[] names = new String[5];
        int[] ages = new int[5];


        for (int i = 0; i < names.length; i++) {

            String a = JOptionPane.showInputDialog(null, "What's your name, user " + (i+1) + "?");
            int b = Integer.parseInt(JOptionPane.showInputDialog(null, "What is your age, " + a + "?"));

            names[i] = a;
            ages[i] = b;

        }

        double agecount = 0;

        for (int i = 0; i < names.length; i++) {
            agecount += ages[i];
            System.out.println("User " + (i+1) + ":  " + names[i] + " " + ages[i] + " years old");
        }
        double avarageAge = agecount /names.length;

        System.out.println("The avarage age for this quiz is " + avarageAge);

    }
User 1:  u1 22 years old
User 2:  u2 10 years old
User 3:  u3 15 years old
User 4:  u4 54 years old
User 5:  u5 12 years old
The avarage age for this quiz is 22.6