Java 获取输入 字符比较

本文修正了一段Java代码中的错误,原代码试图根据用户的比赛成绩和性别来判断是否晋级。修正后的代码使用正确的类型来接收性别输入,并通过字符串比较而非内存地址比较来判断性别。

在论坛上看到一只小弱鸡的错误代码,修改一翻贴出来

原代码:https://bbs.youkuaiyun.com/topics/392352691?page=1#post-403149350

import java.util.Scanner;

public class Zuoye8 {
public static void main(String[] args){
Scanner input1=new Scanner(System.in);
System.out.print("请输入比赛成绩(s):");
int s=input1.nextInt();
Scanner input2=new Scanner(System.in);
System.out.print("请输入性别:");
int sex=input2.nextInt();
int a;
a=sex;
char nan='男',nv='女';
if(s<=10){
if(a==nan){
System.out.println("男子组晋级!");
}else if(a==nv){
System.out.println("女子组晋级!");
}
}else{
System.out.println("淘汰!");
}
}
}

修改后:

package cs;


import java.util.Scanner;                //引用

public class Zuoye8 {
public static void main(String[] args){
Scanner input1=new Scanner(System.in);   //扫描输入
System.out.print("请输入比赛成绩(s):"); //输出提示
int s=input1.nextInt();                  //获取输入
Scanner input2=new Scanner(System.in);   //扫描输入 
System.out.print("请输入性别:");         //输出提示
String sex=input2.next();                 //获取输入

if(s<=10){                               //判断输入的值 是不是小于等于10
if(sex.equals("男") == true){            //判断输入的值 是不是男
System.out.println("男子组晋级!");
}else if(sex.equals("女") == true){      //判断输入的值 是不是女
System.out.println("女子组晋级!");
}
}else{
System.out.println("淘汰!");
}
}
}

例如: 
string1="aaa"; 
string2="aaa"; 
这两个字符串当然应该是相等的。 
如果用表达式string1==string2,则该表达式的值为false 
如果用表达式string1.equals(string2),则该表达式的值为true 
因此应该用string1.equals(string2),在if语句中就是 
if(string1.equals(string2)==true) //字符串相等,……

string1==string2,是值相等,而且内存地址也相等,是完全的相等 
string1.equals(string2)为true,只是值相等 

引用: https://blog.youkuaiyun.com/ecitnet/article/details/1792615



<think> 首先,用户的问题是:“我想查找Java语言中获取输入字符串的方法 请问Java如何获取输入字符串”。这是一个关于Java编程的问题,询问如何从用户获取输入字符串。 根据系统级指令: - 所有行内数学表达式必须使用$...$格式。 - 独立公式使用$$...$$格式。 - LaTeX语法正确。 - 使用中文回答。 - 生成相关问题。 - 在回答中引用的段落末尾自然地添加引用标识。 用户提到了“参考站内引用”,并提供了四个引用:[1], [2], [3], [4]。这些都是关于Java中读取用户输入的例子,特别是字符串。 我需要基于这些引用来回答用户的问题。用户的问题是具体关于获取输入字符串的方法。 回顾引用内容: - 引用[1]:描述了使用Scanner的.next()方法来读取单词。 - 引用[2]:展示了使用Scanner的nextLine()方法来读取一行输入。 - 引用[3]:演示了使用Scanner的next()和nextInt()结合输入多个字符串。 - 引用[4]:显示了多种Scanner方法,包括next()和nextLine()用于字符串。 核心方法是使用java.util.Scanner类来获取输入。关键方法: - next(): 读取下一个单词,直到空格。 - nextLine(): 读取一整行,包括空格直到换行符。 用户指定了“获取输入字符串”,所以我需要覆盖这两种常见方式。 回答结构: 1. **介绍基本方法**:使用Scanner类从System.in读取输入。 2. **详细说明两种字符串读取方式**: - 使用next()读取单词。 - 使用nextLine()读取整行。 3. **提供代码示例**:基于引用,给出清晰的Java代码示例。 4. **添加引用标识**:在回答中引用相关部分末尾添加[^1], [^2]等。 5. **生成相关问题**:在回答末尾生成相关问题。 回答语言:必须使用中文。 生成相关问题:指令要求“生成相关问题”,并在示例中显示了“§§相关问题§§”部分。所以,我需要添加一个相关问题部分。 完整回答结构: - 开头:直接回答用户问题。 - 主体:详细解释方法,包括代码块。 - 结尾:总结或额外提示。 - 相关问题:列出2-3个相关问题。 代码块格式:在用户可见层,可以使用代码块展示Java代码,如引用示例中所示。 确保引用标识自然添加:例如,在解释next()方法时提到引用[1],在解释nextLine()时提到引用[2]等。 最终回答大纲: 1. Java获取输入字符串的常用方法是使用java.util.Scanner类。 2. 主要有两种方式: - 读取单词:使用scanner.next()方法。 - 代码示例:基于引用[1]或[4]。 - 添加引用标识。 - 读取整行:使用scanner.nextLine()方法。 - 代码示例:基于引用[2]或[4]。 - 添加引用标识。 3. 注意事项:例如,混合输入类型时可能出现换行符问题。 4. 生成相关问题。 相关问题建议: - 如何避免在使用Scanner时出现输入错误? - Java中还有其他获取输入的方法吗? - 如何处理用户在输入字符串时的空格? 现在,编译回答。 </think> 在Java语言中,获取用户输入字符串主要通过`java.util.Scanner`类实现,这是标准库中常用的方法。Scanner类提供了读取不同类型输入的功能,包括字符串、整数等。具体到字符输入,主要有两种方式:使用`next()`方法读取单个单词(以空格分隔),或使用`nextLine()`方法读取整行字符串(包括空格直到换行符)。以下是详细解释和代码示例,基于您提供的引用内容。 ### 1. 读取单个单词(使用`next()`方法) `next()`方法从输入流中读取下一个字符串,直到遇到空格或换行符为止。它返回一个字符串对象,适合读取单词(例如,“Hello”)。 示例代码: ```java import java.util.Scanner; // 导入Scanner类 public class ReadWordExample { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); // 创建Scanner对象关联System.in System.out.print("请输入一个单词: "); String word = scanner.next(); // 读取用户输入的单词 System.out.println("您输入的单词是: " + word); scanner.close(); // 关闭Scanner对象释放资源 } } ``` - 运行说明:输入如“Java Programming”时,`scanner.next()`只会读取“Java”,忽略后续内容。 - 基于引用[1]和[4],`next()`方法适合读取由空格分隔的单个字符串词条[^1][^4]。 ### 2. 读取整行字符串(使用`nextLine()`方法) `nextLine()`方法读取一整行输入(包括空格),直到用户按下回车键(换行符)。它返回完整的字符串,适合读取句子或完整输入(例如,“Hello World!”)。 示例代码: ```java import java.util.Scanner; // 导入Scanner类 public class ReadLineExample { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); // 创建Scanner对象关联System.in System.out.print("请输入一行文本: "); String line = scanner.nextLine(); // 读取整行输入 System.out.println("您输入的文本是: " + line); scanner.close(); // 关闭Scanner对象释放资源 } } ``` - 运行说明:输入如“Java Programming”时,`scanner.nextLine()`会读取整个字符串“Java Programming”。 - 基于引用[2]和[4],`nextLine()`常用于处理包含空格的字符输入[^2][^4]。 ### 注意事项 - **混合输入问题**:如果代码中同时读取不同数据类型(如先读整数再读字符串),`nextLine()`可能捕获残留的换行符导致错误。解决方案是在读取字符串前调用`scanner.nextLine()`清空缓冲区(参考引用[3]和[4])。 示例: ```java Scanner scanner = new Scanner(System.in); System.out.print("请输入一个整数: "); int num = scanner.nextInt(); // 读取整数 scanner.nextLine(); // 清空缓冲区 System.out.print("请输入一个字符串: "); String str = scanner.nextLine(); // 正确读取字符串 ``` - **性能与资源**:`Scanner`类简单易用,但处理大数据时可能性能较低;确保在程序结束时调用`scanner.close()`关闭资源。 - 基于引用[4],Scanner类是Java中推荐的控制台输入工具,无需手动解析数据类型[^4]。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值