0

これは私のコードです:

目的は 2 つの大きな数字を加算することです。まず 2 つの配列に 2 つの数字を入力し、次に両方を入れ替えて加算します。コンソールベース、

私はC#の初心者なので、コードに関する知識が少ないことを念頭に置いて説明してください

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Sum_Two_BIG_Numbes
{
    public class matrix
    {

        public int[] c;

        public void input(int[] a)
        {
            for (int i = 0; i < a.Length; i++)
            {

                a[i] = Convert.ToInt32(Console.ReadLine());

            }
        }
        public void Jamk(int[] a, int[] b, int[] c)
        {

            for (int i = 0; i < a.Length; i++)
            {
                int temp = a[i] + b[i];
                if ((temp < 10) && (c[i] != 1))
                {
                    c[i] = c[i] + temp;
                }
                else
                {
                    c[i] = c[i] + temp % 10;
                    c[i + 1] = c[i + 1] + temp / 10;

                }
            }


        }
        public void swap(int[] a)
        {

            for (int i = 0; i < a.Length; i++)
            {
                a[i] = a[a.Length - i];
            }

        }
    }
    class Program
    {
        public void Main(string[] args)
        {
            int[] a = new matrix();
            //int[] a = new int[30];
            int[] b = new int[30];
            int[] c = new int[30];
            Console.WriteLine("Enter First Number : ");
            matrix.input(a);


            Console.ReadLine();
        }
    }
}

「非静的フィールドにはオブジェクト参照が必要です . . . .」というエラーが表示されます。

4

3 に答える 3

2
matrix.input(a);

どこでmatrix宣言されていますか(宣言されていません)。

int[] a = new matrix();

matrixさらに、 のインスタンスをに割り当てることはできませんint[]。一方から他方への暗黙的な変換はありません。これは素晴らしいデザインとは言えませんが、あなたが望んでいたのは次のようなものでした。

matrix a = new matrix();
a.c = new int[SomeSize];
// more code
a.input(b);  // or something similar...
于 2012-07-12T20:19:52.297 に答える
0

次のように Main メソッド内にクラス matrix の新しいインスタンスを作成する必要があります。次に、マトリックス クラスのメソッドを呼び出すことができます。静的メソッドとインスタンス メソッド/プロパティ/フィールドの違いを読んでください。

于 2012-07-12T20:22:16.690 に答える
0

あなたのコードは本当に意味がありませんが、これが私があなたが言っていることだと思います

public void Main(string[] args)
        {
            matrix m = new matrix();
            int[] a = new int[30];
            int[] b = new int[30];
            int[] c = new int[30];
            Console.WriteLine("Enter First Number : ");
            m.input(a);


            Console.ReadLine();
        }

これで、コンパイル エラーの最初のラウンドを回避できますが、それでも意味がありません。あなたの入出力について。

の使用法を読むことをお勧めしますConsole.ReadLine()

于 2012-07-12T20:23:50.173 に答える