首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >java替换数组的元素

java替换数组的元素
EN

Stack Overflow用户
提问于 2018-05-28 19:19:09
回答 1查看 7.1K关注 0票数 1

主要问题将在底部。在下面的文本文件中,假设第一个整数是a,第二个是b,第三个是c,依此类推。该程序获取a、b和c,对它们进行解析,并将它们放入myCalculations方法中,该方法返回一个包含两个整数的字符串。该字符串被解析,a和b被替换为所述返回的字符串中的整数,然后循环的下一次迭代将获取a和b的新值以及整数d。这将一直持续到a和b被打印给用户的末尾。

两个文本文件的输入如下所示:

文本文件的格式如下:

代码语言:javascript
复制
200 345 
36
45
36
21

这是从文件中读入的内容,它按预期工作,我把它放在这里作为上下文。dr是results[]是第一行的整数数组。(int a和b)

代码语言:javascript
复制
public class conflictTrial
{
    BufferedReader in;
    public static void conflictTrial() throws FileNotFoundException 
    {
        System.out.print('\u000c');
        System.out.println("please enter the name of the text file you wish you import. Choose either costs.txt or lotsacosts.txt Nothing else");
        Scanner keyboard = new Scanner(System.in);
        String filename = keyboard.nextLine();
        File file = new File(filename);
        BufferedReader in = new BufferedReader(new FileReader(file));

        String element1 = null;
        try {
            element1 = in.readLine();
        }catch (Exception e) {
            //  handle exception
        }

        String[] firstLine = element1.split(" ");

        Arrays.stream(firstLine).forEach(fl -> {
            //System.out.println("First line element: \t\t\t" + fl);
        });

        int[] results = new int[100];
        for (int i = 0; i < firstLine.length; i++) 
        {
            try {
                int stuff = Integer.parseInt(firstLine[i]);
                results[i] = stuff;
            }
            catch (NumberFormatException nfe) {
                // handle error   
            }
        }     

bufferreader读取文件,for循环将整数解析为数组results[]。接下来,解析其余行,并调用方法myCalculations:

代码语言:javascript
复制
 String otherElement = null;
 int[] aliveSoldiers = new int[100];
 int [] things = new int [100];
 int[] newResults = new int[100];
 try {
      while ((otherElement = in.readLine()) != null) {       // main loop
          System.out.println("Line to process:\t\t\t" + otherElement);
          String[] arr = otherElement.split(" ");

          for (int k = 0; k <arr.length; k++) 
          {
              int thingsResult = Integer.parseInt(arr[k]);
              things[k] = thingsResult;
              System.out.println("number of days: \t\t\t"+things[k]);

              aliveSoldiers[0] = results[0];
              aliveSoldiers[1] = results[1];
              String returnAliveSoliders = myCalculations(aliveSoldiers[0], aliveSoldiers[1], things[k]);
              System.out.println("return soldiers alive: \t\t"+returnAliveSoliders);

              String[] newItems = returnAliveSoliders.split(" ");


              for (int f = 0; f < newItems.length; f++) 
              {
                  int newParse = Integer.parseInt(newItems[f]);
                  newResults[f] = newParse;
                  aliveSoldiers[0] = newResults[0];
                  aliveSoldiers[1] = newResults[1];
              } 
              k++;
          }
       } 
   }
    catch (Exception e) {
       e.printStackTrace();
   }
}

目前,代码执行以下操作:第一次主循环迭代采用整数a、b和c,第二次迭代采用相同的整数a和b (200和345,初始值)和整数d,第三次迭代采用与整数e相同的值和a和b。我尝试使用以下代码来解决此问题:

代码语言:javascript
复制
aliveSoldiers[0] = newResults[0];
aliveSoldiers[1] = newResults[1];

我需要从方法myCalculations中获取整数(在k修饰符循环中解析),并将它们覆盖到aliveSoldiers和aliveSoldiers 1中,以便程序读取下一行,获取新的整数,并继续执行,直到没有剩余的天数。

EN

回答 1

Stack Overflow用户

发布于 2018-05-28 20:25:53

老实说,我还不明白整个练习应该做什么,但是由于您使用的索引,您启发的代码可能是错误的:这些索引总是0和1,即使循环是通过其他一些索引执行的。在第二个代码片段的末尾,f-for以递增的索引"f“修改数组"newResults”,但该数组总是以相同的索引读取:0,然后是1。因此,如果"f“获得比"1”更高的值,则“aliveSoldiers”的元素保持不变。

特别是,aliveSoldiers仅在前两个索引上修改,其他索引根本不使用。

您需要类似堆栈的行为还是类似队列的行为?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50565199

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档