我们正在学习如何使用Stream Reader,并且我遇到了一些方法问题,实际上当我试图获得返回值时它不起作用。
static void FindeMinMaxVerkauf(Verkauf[] arr, out Verkauf min, out Verkauf max)
{
double min2 = 10000;
double max2 = 0;
int min3 = 0;
int max3 = 0;
for (int i = 0; i < arr.Length; i++)
{
if((arr[i].StückPreis * arr[i].Stückzahl) < min2)
{
min2 = arr[i].StückPreis * arr[i].Stückzahl;
min3 = i;
}
if ((arr[i].StückPreis * arr[i].Stückzahl) > max2)
{
max2 = arr[i].StückPreis * arr[i].Stückzahl;
max3 = i;
}
}
min = arr[min3];
max = arr[max3];
}
这就是我试图获得返回值的方式
double min,max;
FindeMinMaxVerkauf(alle, out min, out max);
Console.WriteLine("Verkäufe mit kleinsten Preis " + min + "Verkäufe mit größten Preis" + max );
但它说
CS1503参数“3”:Konvertierung von“
out double
”in“out” _61_T_Shirts.Verkauf“nichtmöglich。
这意味着从double
中的Tshirts
转换... 不可能。我不知道如何解决它。
这是我的第二个方法:
static Verkauf FindeHöchsteStückzahl(Verkauf[] arr)
{
int anz = 0;
int pos = 0;
for (int i = 0; i < arr.Length; i++)
{
if(arr[i].Stückzahl > anz)
{
anz = arr[i].Stückzahl;
pos = i;
}
}
return arr[pos];
}
这就是我试图获得回报价值的方式:
FindeHöchsteStückzahl(alle);
Console.WriteLine("Höchste Stückzahl: " + alle );
但是我得到的数字是结果:
Höchste Stückzahl: _61_T_Shirts.Verkauf[]
我的意思是:
static Verkauf[] FindeVerkäufe(Verkauf[] arr, string farbe)
{
int j = 0;
Verkauf[] finderverk = new Verkauf[10000];
for (int i = 0; i < arr.Length; i++)
{
if(arr[i].Farbe == farbe)
{
finderverk[j] = arr[i];
j++;
}
}
Array.Resize(ref finderverk, j);
return finderverk;
}
} }
我需要帮助; D
答案 0 :(得分:1)
第一个问题。为什么不只是效仿并宣布min
以及max
为Verkauf
?
Verkauf min, max; // Verkauf, not double
FindeMinMaxVerkauf(alle, out min, out max);
// String interpolation - $"... {value} ..." is more readable
// We have min and max of type Verkauf; we want to print out StückPreis:
Console.WriteLine(
$"Verkäufe mit kleinsten Preis {min.StückPreis} Verkäufe mit größten Preis {max.StückPreis}");
第二个问题。您必须保存 FindeHöchsteStückzahl
调用的结果,然后显示它,而不是初始数组:
// Save the result of the method call (sorry for the umlaut)
var hoch = FindeHöchsteStückzahl(alle);
// ... and print out the result (hoch), not the initial array
// If you haven't implement `ToString()` in the Verkauf class
// You, probably, don't want {hoch} but {hoch.StückPreis}:
// Console.WriteLine($"Höchste Stückzahl: {hoch.StückPreis}");
Console.WriteLine($"Höchste Stückzahl: {hoch}");
修改:如果您想要返回数组,即Verkauf[]
(第一和第二个问题合并):
// Array: 1st item is min, 2nd one is max
static Verkauf[] MinMaxVerkauf(Verkauf[] value) {
Verkauf min, max;
FindeMinMaxVerkauf(alle, out min, out max);
return new Verkauf[] {min, max};
}
...
var minmax = MinMaxVerkauf(alle);
Console.WriteLine(
$"Verkäufe mit kleinsten Preis {minmax[0].StückPreis} Verkäufe mit größten Preis {minmax[1].StückPreis}");
修改2 如果您想查询您的数据(找出某些StückPreis
的最大Farbe
),请尝试使用 Linq 专门为此目的而设计:
using System.Linq;
...
// See how it's easy (the third problem in the question):
static Verkauf[] FindeVerkäufe(Verkauf[] arr, string farbe) {
return arr
.Where(stuck => stuck.Farbe == farbe)
.ToArray();
}
...
string farbe = "Rot";
double max = alle
.Where(stuck => stuck.Farbe == farbe)
.Max(stuck => stuck.StückPreis);
double min = alle
.Where(stuck => stuck.Farbe == farbe)
.Min(stuck => stuck.StückPreis);
Console.WriteLine(
$"Farbe {farbe}: Verkäufe mit kleinsten Preis {min.StückPreis} Verkäufe mit größten Preis {max.StückPreis}");
答案 1 :(得分:0)
尝试使用Linq。
它内置,并且确实使代码更具可读性:
using System;
using System.Linq;
public class Program
{
public static void Main()
{
var ar = new Buy[]{
new Buy(){Price = 1, Name = "shirt"},
new Buy(){Price = 2, Name = "hat"},
new Buy(){Price = 3, Name = "dog"}
};
Console.WriteLine(ar.OrderByDescending(b => b.Price).First().Name);
Console.WriteLine(ar.OrderBy(b => b.Price).First().Name);
}
internal class Buy{
public int Price;
public string Name;
}
}
打印:
dog
shirt
这应该引导你朝着正确的方向前进。