question

ValentinaBocchi-8967 avatar image
0 Votes"
ValentinaBocchi-8967 asked TimonYang-MSFT edited

error CS0103

 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?

dotnet-csharpvs-generalvs-debugging
· 2
5 |1600 characters needed characters left characters exceeded

Up to 10 attachments (including images) can be used with a maximum of 3.0 MiB each and 30.0 MiB total.

Two things

Edit your post, place your code in a code block, 5th button from the left on the toolbar

pseudocode written in notepad

 var splitValues = relevant_lines[ri].Split(';')
 if(splitValues.Length  >0)
 {
     // continue
     // Make sure there are enough elements to perform the .Skip(1)
 }else  
 {
     // no elements
 }



0 Votes 0 ·

@ValentinaBocchi-8967
According to the error message, you used the variable ai outside the for loop, and it was defined in the for loop below.

error CS0103: Il nome 'ai' non esiste nel contesto corrente

But according to the code, this has not happened, I copied your code as it is without any compiler errors, please check the code you posted to see if any changes have been made.

0 Votes 0 ·

0 Answers