に値を転送することはできません:は私が名前の最初のクラスを持っている別のクラス(C#の)
Appartments[] appartments;
私は「数」の値をコピーして、「AppartmentInfo.cs」クラスにそれを貼り付ける(私は彼らを推測パラメータと呼ばれます)。
public static void FindFloor(Appartments[] appartments, int amount,out int floorToRound,out AppartmentInfo[] AInfo)
{
floorToRound = 0;
AInfo = new AppartmentInfo[Max];
for (int i = 0; i < amount; i++)
{
AInfo[i].Floor1 = Convert.ToDouble(appartments[i].Number);
Console.WriteLine(appartments[i].Number);
if (appartments[i].Number < 27)
{
appartments[i].Number = 1;
}
else
{
appartments[i].Number /= 27;
}
}
}
必要な場合は、コード全体を投稿することができます。エラーが発生する: NullReferenceExceptionが処理されませんでした。ライン上の
エラー:
AInfo[i].Floor1 = Convert.ToDouble(appartments[i].Number);
FULL CODE:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace P3._1
{
class Program
{
public const int Max = 20;
static void Main(string[] args)
{
int amount, AmountOfRooms, price, floor, floorToRound;
Appartments[] appartments;
AppartmentInfo[] AInfo;
//AppartmentInfo AInfo = new AppartmentInfo();
ReadData(out appartments, out amount);
TextImput(out floor, out AmountOfRooms, out price);
FindFloor(appartments, amount,out floorToRound,out AInfo);
Console.ReadKey();
}
public static void ReadData(out Appartments[] appartments, out int amount)
{
amount = 0;
appartments = new Appartments[Max];
using (StreamReader reader = new StreamReader("C:\\Users\\Andrius\\Desktop\\Mokslams\\C#\\Pratybos\\P3\\P3.1 be konstruktoriaus\\Appartments.csv", true))
{
reader.ReadLine();
string line = null;
while (null != (line = reader.ReadLine()))
{
string[] values = line.Split(',');
int number = int.Parse(values[0]);
int area = int.Parse(values[1]);
int rooms = int.Parse(values[2]);
int sellingCost = int.Parse(values[3]);
int phone = int.Parse(values[4]);
Appartments appartmentsObj = new Appartments(number, area, rooms, sellingCost, phone);
appartments[amount++] = appartmentsObj;
}
}
}
public static void TextImput(out int floor, out int AmountOfRooms, out int price)
{
AmountOfRooms = 0;
price = 0;
Console.WriteLine("Iveskite buto aukštą: ");
floor = int.Parse(Console.ReadLine());
Console.WriteLine("Iveskite kambariu skaiciu: ");
AmountOfRooms = int.Parse(Console.ReadLine());
Console.WriteLine("Maksimali kaina: ");
price = int.Parse(Console.ReadLine());
}
public static void FindFloor(Appartments[] appartments, int amount,out int floorToRound,out AppartmentInfo[] AInfo)
{
floorToRound = 0;
AInfo = new AppartmentInfo[Max];
for (int i = 0; i < amount; i++)
{
AInfo[i].Floor1 = Convert.ToDouble(appartments[i].Number);
Console.WriteLine(appartments[i].Number);
if (appartments[i].Number < 27)
{
appartments[i].Number = 1;
}
else
{
appartments[i].Number /= 27;
}
}
}
}
}
を、量が境界を通過したことがありません。私はちょうど完全なコードをアップロードしました – Andrius
forループの最初の反復で失敗しますか? – Banners
私はBensの答えと同じ考え方に従っていたので、私は尋ねます。彼は正しい。あなたの配列は初期化されていますが、その中の要素は初期化されていません。 – Banners