C#控制台程序,要求用户输入5个大写字母,如果输入信息不符则要求重新输

如题,这是我的代码,但是程序是有错的.帮我看看哪错了?有加分!usingSystem;usingSystem.Collections.Generic;usingSyste... 如题,这是我的代码,但是程序是有错的.帮我看看哪错了? 有加分!
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string s;
bool check=true;
//Console.WriteLine("请输入5个大写字母");
while(check){
Console.WriteLine("请输入5个大写字母");
s=Console.ReadLine();
Console.WriteLine(s);
if(s.Length==5){
for(int i=0;i<5;i++){

if (char.IsLetter(s[i]))
{
if (char.IsLower(s[i]))
{
Console.WriteLine("存在小写字母,请重新输入:");
s = Console.ReadLine();

}

}

else if (char.IsUpper(s[i]))
continue;
else
{
Console.WriteLine("存在非英文字母,请重新输入:");
s = Console.ReadLine();
}

}check=false;

}

else{
Console.WriteLine("字数不够,请重新输入:");
Console.ReadLine();
continue;
}

}

Console.ReadLine();

}

}
}
展开
 我来答
荧光鼠
推荐于2017-09-26 · TA获得超过175个赞
知道答主
回答量:55
采纳率:0%
帮助的人:70.6万
展开全部
你错误的主要原因是使用了continue导致没有跳出循环。
另外你这样写有问题,本来应该使用break跳出循环,但在多层循环中使用break会直接结束全部循环,应该我的第二种方式把第二层循环提取成方法,比较标准一些,第一种方式虽然解决了问题但代码结构上不好。
----------------------------------------------------------------------------------------
第一种方式
----------------------------------------------------------------------------------------
我完全按照你的编程方式解决了
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string s;
bool check = true;
//Console.WriteLine("请输入5个大写字母");
while (check)
{
Console.WriteLine("请输入5个大写字母");
s = Console.ReadLine();
Console.WriteLine(s);
if (s.Length == 5)
{
int i=0;
for (i = 0; i < 5; i++)
{

if (char.IsLetter(s[i]))
{
if (char.IsLower(s[i]))
{
Console.WriteLine("存在小写字母,请重新输入:");
// s = Console.ReadLine();
i = 6;

}

}

else if (char.IsUpper(s[i]))
{
continue;
}
else
{
Console.WriteLine("存在非英文字母,请重新输入:");
// s = Console.ReadLine();
i = 6;
}

}
if(i!=6+1) //i到最后还是会自增一次才会判断是否结束循环
check = false;

}

else
{
Console.WriteLine("字数不够,请重新输入:");
// Console.ReadLine();
continue;
}

}

//Console.ReadLine();

}
}
}
------------------------------------------------------------------------------------------------
第二种方式
------------------------------------------------------------------------------------------------

最好的解决方法应该是这样的:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string s;
bool check = true;
//Console.WriteLine("请输入5个大写字母");
while (check)
{
Console.WriteLine("请输入5个大写字母");
s = Console.ReadLine();
Console.WriteLine(s);
check = Check(s);
}

//Console.ReadLine();

}

private static bool Check(string s)
{
if (s.Length == 5)
{
int i = 0;
for (i = 0; i < 5; i++)
{

if (char.IsLetter(s[i]))
{
if (char.IsLower(s[i]))
{
Console.WriteLine("存在小写字母,请重新输入:");

return true;

}

}

else if (char.IsUpper(s[i]))
{
continue;
}
else
{
Console.WriteLine("存在非英文字母,请重新输入:");
// s = Console.ReadLine();
return true ;
}

}
return false;

}

else
{
Console.WriteLine("字数不够,请重新输入:");
return true;
}
}
}
}
海底十一万里
2011-03-04 · TA获得超过135个赞
知道小有建树答主
回答量:130
采纳率:0%
帮助的人:95.5万
展开全部
逻辑其实很简单,循环判断每个字符是不是大写字符就行了(可以拿到字符的ASCII,我记得大写字母和小写字母,以及数字都有特定的区间的).

从代码风格上看,你应该是初学着,代码要简洁,调理,加注释,这个是程序员必备的素质。
if else的嵌套最好不要用,不然你写的程序,过了两天,自己再看都头疼。下面是我写的一点其他小程序的代码,你参考参考,希望对你有帮助

using System;

using System.Windows.Forms;

namespace WindowsFormsApplication1 {
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e) {
var aStr = this.textBox1.Text.Trim();
var bStr = this.textBox2.Text.Trim();
var cStr = this.textBox3.Text.Trim();
//不为空
if (string.IsNullOrEmpty(aStr) && string.IsNullOrEmpty(bStr) && string.IsNullOrEmpty(cStr)) {
this.label4.Text = "A,B,C都不可以为空";
return;
}
//都是数字
float a, b, c;
if (!float.TryParse(aStr, out a)) {
this.label4.Text = "输入的A不是数字";
return;
}
if (!float.TryParse(bStr, out b)) {
this.label4.Text = "输入的B不是数字";
return;
}
if (!float.TryParse(cStr, out c)) {
this.label4.Text = "输入的C不是数字";
return;
}
//三遍从大到小排序 依次为a,b,c
if (a < b) {
float d = a;
a = b;
b = d;
}
if (a < c) {
float d = a;
a = c;
c = d;
}
if (b < c) {
float d = b;
b = c;
c = d;
}
//判断是否能构成三角形
if (!((a + b > c) && (a - b < c) && (b + c > a) && (b - c < a) && (a + c > b) && (a - c < b))) {
this.label4.Text = "此三边不能构成三角形";
return;
}
//判断是否等边
if (a == b&&b == c) {
this.label4.Text = "此三角形为等边三角形";
return;
}
//判断是否等腰
if (a == b || a == c || b == c) {
this.label4.Text = "此三角形为等腰三角形";
return;
}
this.label4.Text = "此三角形为不规则三角形";
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
网上冲浪玩家
推荐于2018-11-01 · TA获得超过574个赞
知道小有建树答主
回答量:535
采纳率:100%
帮助的人:342万
展开全部
string s ;
bool check=true;
while(check){
Console.WriteLine("请输入5个大写字母");
s=Console.ReadLine();
Console.WriteLine(s);
if(s.Length==5)
{
for(int i=0;i<5;i++){

if (char.IsLetter(s[i]))
{
if (char.IsLower(s[i]))
{
Console.WriteLine("存在小写字母,请重新输入:");
s = Console.ReadLine();
i = 0;//重新开始循环
}

}
else
{
Console.WriteLine("存在非英文字母,请重新输入:");
s = Console.ReadLine();
}

}check=false;

}
else
{
Console.WriteLine("字数不够或太多,请重新输入:");
Console.ReadLine();
continue;
}

}

Console.ReadLine();
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
手机用户52955
2011-03-05 · 超过35用户采纳过TA的回答
知道答主
回答量:178
采纳率:0%
帮助的人:0
展开全部
Main(string[] args)
{
int num;
int i = 1;
int j = 1;
int x = 1;
for (i = 1; i <= 5;i++ )
{
num = i * i;
Console.WriteLine(num);
}

while (j < 6)
{
num = i * i;
Console.WriteLine(num);
i++;
}

do
{
num = i * i;
Console.WriteLine(num);
i++;
} while (x < 6);
}

题2
public static bool character(string input)
{

if (input.Length != 5)
{
Console.WriteLine("输入长度不符合,请重新输入!");
return false;
}
else if (input == input.ToLower())
{
Console.WriteLine("请输入大写字母!");
return false;
}
else
{
Console.WriteLine("输入成功!");
return true;
}
}

static void Main(string[] args)
{

for (; ; )
{
string input;
Console.WriteLine("请输入五个大写字母");
input = Console.ReadLine();
if (character(input))
{
break;
}
}
}

题3

static void Main(string[] args)
{
for (; ; )
{
int num;
Console.WriteLine("请输入一个数:");
num = int.Parse(Console.ReadLine());
if (num > 0)
{
for (int i = 1; i <= num; i++)
{
Console.Write(i + " ");
}
Console.WriteLine();
}
else
{
Console.WriteLine("程序退出!");
break;
}
}
}

题4 俺数学丑...........汗一个..........
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
夜閮
2011-03-04 · TA获得超过2656个赞
知道大有可为答主
回答量:1807
采纳率:0%
帮助的人:2065万
展开全部
string s;
bool check = true;
Console.WriteLine("请输入5个大写字母");
while (check)
{
s = Console.ReadLine();
if (s.Length == 5)
{
for (int i = 0; i < 5; i++)
{

if (char.IsLetter(s[i]))
{
if (char.IsLower(s[i]))
{
Console.Write("存在小写字母,请重新输入:");

break;
}
}
else
{
Console.Write("存在非英文字母,请重新输入:");
break;
}
check = false;
}
}
else
{
Console.Write("字数不够,请重新输入:");
}
}
Console.ReadLine();
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式