System.in 在流里面的简单用法

本文提供了一个简单的Java程序实例,演示如何从控制台读取两个整数并计算它们的和。程序首先创建InputStreamReader和BufferedReader对象来读取用户的输入,然后使用Integer.parseInt将字符串转换为整数,并输出两个数的总和。

import java.io.*;
public class TestAnd{
       public static void main(String[] args)throws Exception{
           InputStreamReader ir=new InputStreamReader(System.in);
             BufferedReader buf=new BufferedReader(ir);
             int i1=0;
             int i2=0;
             String str=null;
    try  {
             System.out.print("输入第一个值:");
             str=buf.readLine();
             i1=Integer.parseInt(str);

             System.out.print("输入第二个值:");
             str=buf.readLine();
             i2=Integer.parseInt(str);

            System.out.println("两数值之和是:"+(i1+i2));
    }catch(Exception e){
     System.out.println("输入的是非法数字");
    }
       
   }
}

第一段代码// 使用 HashMap 存储任务 private static HashMap<Integer, String> tasks = new HashMap<>(); private static int nextId = 1; private static int maxTasks; private static ArrayList<String> invalidInputs = new ArrayList<>(); //使用数组存储任务,定义为static,静态代码块:初始化最大任务数 static { Scanner sc = new Scanner(System.in); maxTasks = sc.nextInt(); // 吃掉换行符 sc.nextLine(); System.out.println("确定好了一共 " + maxTasks + " 条任务哦!"); } //基础任务和进阶任务,一共八个功能(有一个是defult里面记录用户错误输入的需求) // 客户端发送的消息一次性以空格拆分为最多三部分 // parts[0]=命令, [1]=ID, [2]=内容(可选) String[] parts = msg.split(" ", 3); // 第一部分:命令名 String command = parts[0]; // 第二部分:任务编号 int taskId = Integer.parseInt(parts[1]); // 第三部分:任务内容(可能没有) String content = (parts.length > 2) ? parts[2] : ""; switch (command) { case "add": if (tasks.size() >= maxTasks) { System.out.println("任务列表已满!"); } else { tasks.put(taskId, content); System.out.println("已添加 -> ID:" + taskId + ", 内容:'" + content + "'"); if (taskId >= nextId) { nextId = taskId + 1; } } break; case "list": System.out.println("--- 当前任务列表 ---"); if (tasks.isEmpty()) { System.out.println("暂无任务"); } else { for (int id : tasks.keySet()) { System.out.println(id + ": " + tasks.get(id)); } } break; case "modify": tasks.put(taskId, content); System.out.println("任务" + taskId + "已修改为: '" + content + "'"); break; case "delete": tasks.remove(taskId); System.out.println("任务" + taskId + "已删除"); break; case "clear": tasks.clear(); nextId = 1; System.out.println("所有任务已清空"); break; case "count": int count = tasks.size(); System.out.println("当前共有 " + count + " 个任务(最多可存 " + maxTasks + " 条)"); break; case "help": System.out.println("==== 帮助菜单 ===="); System.out.println("可用命令如下:"); System.out.println(" add 1 买菜 —— 添加ID=1的任务"); System.out.println(" modify 2 新内容 —— 修改ID=2的任务"); System.out.println(" delete 3 —— 删除ID=3的任务"); System.out.println(" list —— 查看全部任务"); System.out.println(" clear —— 清空所有任务"); System.out.println(" count —— 显示任务总数"); System.out.println(" help —— 显示此帮助信息"); break; default: // 把用户输入的原始消息保存到列表中 invalidInputs.add(msg); System.out.println("未知命令: '" + command + "'"+"抱歉" + "我目前只有这么多功能."); // 打印当前已记录多少条无效输入 System.out.println("但是我当前已记录 " + invalidInputs.size() + " 条功能之外的需求" + "我会努力增加的"); } } } catch (Exception e) { throw new RuntimeException(e);和第二段代码import java.io.DataOutputStream; import java.io.OutputStream; import java.net.Socket; import java.util.Scanner; public class Client{ public static void main(String[] args)throws Exception { //基础任务一,使用tcp通信,创建Socket对象,并同时请求与服务端程序的连接 Socket csoc = new Socket("192.168.243.133", 8888); //2.从socket通信管道中得到一个字节输出,用来发数据给服务端程序。 OutputStream outc = csoc.getOutputStream(); //3、把低级的字节输出包装成数据输出 DataOutputStream doutc = new DataOutputStream(outc); Scanner sc = new Scanner(System.in); while (true) { System.out.println("欢迎来到华南农大校科联自科部,请输入你一共要添加几个项目"); String msg = sc.nextLine(); //一旦用户输入了exit,就退出客户端程序 if ("exit".equals(msg)) { System.out.println("欢迎您下次光临!退出成功!"); doutc.close(); csoc.close(); break; } //4、开始写数据出去了,并且及时清理以免占用内存。 doutc.writeUTF(msg); doutc.flush(); } } }第一段代码加入到第二段代码中,整合起来作为新的客户端,只用java尽量少的改动,详解每一行代码
10-18
public class Todolist { import java.io.DataInputStream; import java.io.InputStream; import java.net.Socket; import java.util.ArrayList; import java.util.HashMap; import java.util.Scanner; public class SeverReaderThread extends Thread{ //下面是有参构造器,在这里再创建一个csoc接收处理 private Socket csoc; // 使用 HashMap 存储任务 private static HashMap<Integer, String> tasks = new HashMap<>(); private static int nextId = 1; private static int maxTasks; private static ArrayList<String> invalidInputs = new ArrayList<>(); //使用数组存储任务,定义为static,静态代码块:初始化最大任务数 static { Scanner sc = new Scanner(System.in); maxTasks = sc.nextInt(); // 吃掉换行符 sc.nextLine(); System.out.println("确定好了一共 " + maxTasks + " 条任务哦!"); } public SeverReaderThread(Socket csoc){ //把送进来的csoc管道给到上面的socket,把当前客户管道交给了一个独立的线程对象。 this.csoc=csoc; } @Override public void run() { //进阶任务:处理异常,得到输入,包装成数据输入 try{ InputStream is=csoc.getInputStream(); DataInputStream dis=new DataInputStream(is); while(true){ String msg=dis.readUTF(); //基础任务和进阶任务,一共八个功能(有一个是defult里面记录用户错误输入的需求) // 客户端发送的消息一次性以空格拆分为最多三部分 // parts[0]=命令, [1]=ID, [2]=内容(可选) String[] parts = msg.split(" ", 3); // 第一部分:命令名 String command = parts[0]; // 第二部分:任务编号 int taskId = Integer.parseInt(parts[1]); // 第三部分:任务内容(可能没有) String content = (parts.length > 2) ? parts[2] : ""; switch (command) { case "add": if (tasks.size() >= maxTasks) { System.out.println("任务列表已满!"); } else { tasks.put(taskId, content); System.out.println("已添加 -> ID:" + taskId + ", 内容:'" + content + "'"); if (taskId >= nextId) { nextId = taskId + 1; } } break; case "list": System.out.println("--- 当前任务列表 ---"); if (tasks.isEmpty()) { System.out.println("暂无任务"); } else { for (int id : tasks.keySet()) { System.out.println(id + ": " + tasks.get(id)); } } break; case "modify": tasks.put(taskId, content); System.out.println("任务" + taskId + "已修改为: '" + content + "'"); break; case "delete": tasks.remove(taskId); System.out.println("任务" + taskId + "已删除"); break; case "clear": tasks.clear(); nextId = 1; System.out.println("所有任务已清空"); break; case "count": int count = tasks.size(); System.out.println("当前共有 " + count + " 个任务(最多可存 " + maxTasks + " 条)"); break; case "help": System.out.println("==== 帮助菜单 ===="); System.out.println("可用命令如下:"); System.out.println(" add 1 买菜 —— 添加ID=1的任务"); System.out.println(" modify 2 新内容 —— 修改ID=2的任务"); System.out.println(" delete 3 —— 删除ID=3的任务"); System.out.println(" list —— 查看全部任务"); System.out.println(" clear —— 清空所有任务"); System.out.println(" count —— 显示任务总数"); System.out.println(" help —— 显示此帮助信息"); break; default: // 把用户输入的原始消息保存到列表中 invalidInputs.add(msg); System.out.println("未知命令: '" + command + "'"+"抱歉" + "我目前只有这么多功能."); // 打印当前已记录多少条无效输入 System.out.println("但是我当前已记录 " + invalidInputs.size() + " 条功能之外的需求" + "我会努力增加的"); } } } catch (Exception e) { throw new RuntimeException(e); } } } }上面是我原有的代码,在我原有代码上面修改,变成一个完整的程序,尽量少的修改,简单初学这可以学会,提供最终完整答案,表明修改了哪里,只用java,每一行都解释
最新发布
10-18
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值