混淆在数组中存储数据

时间:2015-01-28 16:43:56

标签: java fibonacci

大家好我的程序有问题我做了一个用户输入斐波纳契数字的程序,答案是"是"如果它的斐波纳契数字和"否"如果不。到目前为止,这是我的代码。

样品: 输入 1 3 五 7

输出 是 是 是 否

import java.io.*;
import java.util.*;
public class Storage
{
    public static void main(String args [])throws IOException
    {
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));


        int a,b,c;
        b =0;
        c =1;
        boolean vince = false;

        int []stor = new int[10];
        for(int v=0; v<stor.length; v++)
        {
            a = b;
            b = c;
            c = a+b;
            stor[v] = c;

        }


        System.out.println("Input");

        String [] stor2 = new String[10];
        for(int v=0; v<stor.length; v++)
        {


            int x = Integer.parseInt(in.readLine());

            for(int k=0; k<stor2.length; k++)
            {
                if(stor[k] == x)
                {
                    vince = true;

                    if(vince)
                    {
                        stor2[k] = "Yes";
                    }
                    else
                    {
                        stor2[k] = "No";
                    }
                }
            }

        }

        for(int p=0; p<stor2.length; p++)
        {
            System.out.print(stor2[p]);
        }

    }
}

2 个答案:

答案 0 :(得分:0)

您应该将stor2的所有元素初始化为"No",这样每个未明确分配"Yes"的元素都会打印为"No";如目前所写,那些未在循环中明确指定的元素将是Null,并按原样打印。

答案 1 :(得分:0)

嘿,看看问题是什么......

您的代码:

         vince = true;

                if(vince==true)
                {
                   System.out.println("Entered yes");
                    stor2[k] = "Yes";
                }
                else if(vince==false)
                {
                     System.out.println("Entered no");
                    stor2[k] = "No";
                }

您的代码永远不会进入第二个,因为 vince 永远不会 false

一个解决方案是:

boolean vince = false;

  System.out.println("Input");

    String [] stor2 = new String[10];
     for(int p=0; p<stor2.length; p++) //Here make all "No" before begin
        stor2[p]="No";


    for(int v=0; v<stor.length; v++)
    {.....}

运行这个....

   import java.io.*;
   import java.util.*;
 public class Storage
{
   public static void main(String args [])throws IOException
    {
    BufferedReader in = new BufferedReader(new InputStreamReader(System.in));


    int a,b,c;
    b =0;
    c =1;
    boolean vince = false;

    int []stor = new int[10];
    for(int v=0; v<stor.length; v++)
    {
        a = b;
        b = c;
        c = a+b;
        stor[v] = c;

    }


    System.out.println("Input");

    String [] stor2 = new String[10];

    for(int p=0; p<stor2.length; p++)
       stor2[p]="No";



    for(int v=0; v<stor.length; v++)
    {


        int x = Integer.parseInt(in.readLine());

        for(int k=0; k<stor2.length; k++)
        {
            if(stor[k] == x)
            {
                vince = true;

                if(vince==true)
                {
                   System.out.println("Entered yes");
                    stor2[k] = "Yes";
                }
                else if(vince==false)
                {
                     System.out.println("Entered no");
                    stor2[k] = "No";
                }
            }
        }

    }


     for(int p=stor2.length-1; p>=0; p--)
    {
        System.out.print(stor2[p]);
    }

  }
  }

让我知道它是否有效我简单地用“NO”填充数组并打印 从最后开始。