C#中,动态数组和循环体的问题!

落阳 2008-11-17 05:23:36
各位大大,我是个新手,这个问题我无法表达清楚,所以只能把代码发出来了,请哪位大大帮忙指正一下,多谢了!
我想要实现的是,输入一个控制范围内的整数,例如2025,输出x=20,y=25
1 由于只能在偶位整数上计算,所有需要判断位数,若为奇数位例如123,则发出警告无法通过
2 若算出a数为K位,则用a/10的(k/2)次获得小数点在中间的数,例如
输入2025,算出该数是4位数,则2025/10^(4/2) = 20.25
3 然后将20.25分开,.左边的赋值给x,右边的赋值给y

下面是部分代码,大大们看一下,唉,非常幼稚的代码,希望大大们别笑话 。。。努力学习!
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;

namespace _025
{
class Program
{
static void Main(string[] args)
{
Console.Write("输入一个数:");
int a = int.Parse(Console.ReadLine());
Ck(a);
}
static void Ck(int v)
{
ArrayList num = new ArrayList(); //定义动态数组用来保存20.25
int a = v;
for (int i = 0; ; i++)
{
int k = a / (int)Math.Pow(10, i); // 10的i次
//Console.WriteLine(k); // 检查k的值
if (k < 10)
{
if ((i + 1) % 2 == 0)
{
Console.WriteLine("{0}是{1}位数!", v, i + 1);
Console.WriteLine(v / Math.Pow(10, (i+1) / 2)); // 2025 / 100 = 20.25
num.Add(v / Math.Pow(10, (i+1) / 2));
//Console.WriteLine(num[0]);//检查动态数组中数据是否正确
}
else
Console.WriteLine("{0}是奇位数,请输入偶位数!", v);
break;
}

Console.WriteLine("动态数组中有{0}条数据:{1}", num.Count, num[0]);
/*
OOXX OOXX OOXX OOXX OOXX OOXX OOXX 华丽的分界线 OOXX OOXX OOXX OOXX OOXX OOXX
*/

}

Console.WriteLine("动态数组中有{0}条数据:{1}",num.Count,num[0]);
double[] Array = new double[num.Count]; //定义一个普通数组
num.CopyTo(Array); //将动态数组num中的数据 转移给 普通数组 array ,为了将object类型转换成string类型
Console.WriteLine("新数组中有{0}条数据:{1}",Array.Length,Array[0]); //检查新数组中数据是否正确转移

}
}
}


由于输入的整数是未知位,即可能2位,4位,6位(int类型有范围暂不考虑哈),所以20.25也有可能是201.325,于是我特地用动态数组来保存他们。后来由于动态数组中的数据是Object类型的,于是又拷贝到double数组中。
问题来了~~
NO.1 动态数组num在if语句内就已经自增,但是为什么无法再for循环内查看它?实例:Console.WriteLine("动态数组中有{0}条数据:{1}",num.Count,num[0]);这条语句无法在华丽的分界线中执行。难道是因为num是定义在for循环外面的?求解~
NO.2 要将20.25分割成20和25,如何实现?Substring只能在string类型的数据中使用,Split?

问题可能很笨。。各位别笑话。。。
...全文
210 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
pvgyetg 2008-11-19
  • 打赏
  • 举报
回复
友情UP
我姓区不姓区 2008-11-19
  • 打赏
  • 举报
回复

static void Main(string[] args)
{
Console.Write("输入一个数:");
Ck(Console.ReadLine());
}

private static void Ck(string input)
{
int n = 0;
if (!int.TryParse(input, out n))
{
Console.Write("请输入整数:");
Ck(Console.ReadLine());
return;
}
int length = n.ToString().Length;
if (length % 2 != 0)
{
Console.Write("请输入偶位数:");
Ck(Console.ReadLine());
return;
}
double result = (double)(n / Math.Pow(10, length / 2));
int x = int.Parse(result.ToString().Split('.')[0]);
int y = int.Parse(result.ToString().Split('.')[1]);
Console.WriteLine("x={0},y={1}", x, y);
}

云飞何处 2008-11-19
  • 打赏
  • 举报
回复
至于这样嘛
//textBox1是我用来输入的框
//长度必须能被2整除
if(textBox1.Text.Length%2!=0)return;
int half=textBox1.Text.Length/2;//算出长度的一半
textBox2.Text=textBox1.Text.Substring(0,half).ToString()+"."+textBox1.Text.Substring(half,half).ToString();
//3,textBox2.Text=textBox1.Text.Substring(0,half).ToString()
//4,textBox3.Text.Substring(half,half).ToString();

你要两个值分开就分别列成3,4,中一样即可

111,130

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧