Share via

error CS0103

Valentina Bocchi 1 Reputation point
2021-04-08T22:49:20.45+00:00
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;

class Program
{
static void Main(string[] args)
{
System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.InvariantCulture;
//LEGGO NOME FILE DA PROCESSARE DALLA LINEA DI COMANDO
var input_file = "trial.dat";
int NYEARS = 32; //30
int NRUNS = 54; //54

//DICHIARO I RANGE DELLE VARIABILI INDIPENDENTI
var bus_types = new[] { "40ftdiesel", "60ftdiesel", "40ftcng", "60ftcng", "40fthybrid", "60fthybrid", "40ft250kWh", "40ft350kWh", "60ft650kWh", "40ft250kWhplugin", "40ft110kWhpantograph", "40ft110kWhwireless" };
var age_types = Enumerable.Range(0, 16).Select(x => x.ToString()).ToArray();
var year_types = Enumerable.Range(1, NYEARS).Select(x => x.ToString()).ToArray();
var run_types = Enumerable.Range(1, NRUNS).Select(x => x.ToString()).ToArray();
//PREPARO LA LISTA CHE CONTERRA LE RIGHE DELL'OUTPUT
List<string> all_output_lines = new List<string>();
//LEGGO IL FILE
var all_input_lines = System.IO.File.ReadAllLines(input_file);
for (int l = 0; l < all_input_lines.Length; l++)
{
var input_line = all_input_lines[l];
//SE NON TROVO IL MARKER PASSO ALLA RIGA SUCCESSIVA
if (!input_line.StartsWith("#MACRO "))
{
//COPIO LA RIGA DIRETTAMENTE SULL'OUTPUT
all_output_lines.Add(input_line);
//CONTINUE MI FA COMINCIARE L'ITERAZIONE SUCCESSIVA SENZA FINIRE QUELLA CORRENTE
continue;
}
if (input_line.StartsWith("#MACRO TABLE maintenance"))
{
//>> command = "maintenance.csv" ("40ft250kWh","40ft350kWh","60ft650kWh","40ft250kWhplugin") %columns% %invariant% %rows%
//PER LA TABELLA DI MAINENANCE HO NTABELLE PER IL TIPO DI BUS, RIGHE PER LA CORSA E COL X ETA'
var maintenance_lines = System.IO.File.ReadAllLines("mcosts.csv");

//LEGGO LE 4 TABELLE (ogni tabella è di tipo double[,], l'array è double[][,])
var kind_subtables = new double[bus_types.Length][,];
//Spezziamo il file in N tabelle che iniziano dalla riga in cui trovo il nome del Kind di autobus
for (int ki = 0; ki < bus_types.Length; ki++)
{
kind_subtables[ki] = new double[run_types.Length, age_types.Length];
var row_name = bus_types[ki];
var relevant_lines = maintenance_lines //DI TUTTE LE RIGHE LETTE DA MAINTENANCE.CSV
.SkipWhile(line => !line.Contains(row_name)) //SALTA TUTTE QUELLE CHE NN CONTENGONO IL NOME DEL TIPO DI BUS
.Skip(3) //SALTANE ALTRE 3 (NUMERO MAGICO)
.Take(run_types.Length) //PRENDINE N DOVE N è IL NUMERO DI CORSE DA CONSIDERARE
.ToArray(); //TRASFORMA IN ARRAY
for (int ri = 0; ri < run_types.Length; ri++) //PER OGNI RIGA RILEVANTE
{
var cells = relevant_lines[ri]
.Split(';') //LA DIVIDO USANDO IL CARATTERE ","
.Skip(1) //SALTO IL PRIMO
.ToArray(); ***AT THIS POINT I GOT THE ERROR (IN DEBUG)
Nome Valore Tipo
age_types[ai] error CS0103: Il nome 'ai' non esiste nel contesto corrente***

for (int ai = 0; ai < age_types.Length; ai++)
{
double parsed = 0;
if (cells[ai] == "-")
parsed = 0;
else if (!double.TryParse(cells[ai], out parsed))
throw new InvalidOperationException($"NON SONO RIUSCITO A TRASFORMARE IL TESTO {cells[ai]} IN NUMERO");

kind_subtables[ki][ri, ai] = parsed;

}
}
}

....
CAN YOU HELP ME?

Developer technologies | Visual Studio | Debugging
Developer technologies | Visual Studio | Other
Developer technologies | Visual Studio | Other

A family of Microsoft suites of integrated development tools for building applications for Windows, the web, mobile devices and many other platforms. Miscellaneous topics that do not fit into specific categories.

Developer technologies | C#
Developer technologies | C#

An object-oriented and type-safe programming language that has its roots in the C family of languages and includes support for component-oriented programming.


Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.