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();
}
}
} 展开
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();
}
}
} 展开
展开全部
你错误的主要原因是使用了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;
}
}
}
}
另外你这样写有问题,本来应该使用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;
}
}
}
}
展开全部
逻辑其实很简单,循环判断每个字符是不是大写字符就行了(可以拿到字符的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 = "此三角形为不规则三角形";
}
}
}
从代码风格上看,你应该是初学着,代码要简洁,调理,加注释,这个是程序员必备的素质。
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 = "此三角形为不规则三角形";
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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();
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();
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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 俺数学丑...........汗一个..........
{
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 俺数学丑...........汗一个..........
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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();
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();
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询