Java中輸入輸出方式詳細(xì)講解
前言
學(xué)過C語言的都是知道,在C語言中,輸入用scanf()函數(shù),輸出用printf。那么,Java中,輸入輸出的方式是怎樣的呢?這篇文章,我們來詳細(xì)討論一下Java中的輸入輸出方式。
一、輸出到控制臺(tái)
在前面幾篇文章中,我們會(huì)經(jīng)常用到打印,其實(shí),打印就是Java中的一種常用的輸出方式。所以,我們先來看看輸出
- 基本語法
System.out.println(msg); // 輸出一個(gè)字符串, 帶換行 System.out.print(msg); // 輸出一個(gè)字符串, 不帶換行 System.out.printf(format, msg); // 格式化輸出
(1)println 輸出的內(nèi)容自帶 \n, print 不帶 \n。
(2)printf 的格式化輸出方式和 C 語言的 printf 是基本一致的。
- 代碼示例
System.out.println("hello world");
int x = 10;
System.out.printf("x = %d\n", x);- 格式化字符串當(dāng)我們使用printf格式化輸出的時(shí)候,會(huì)用到格式化字符串。下面這個(gè)表格,在我們需要用到的時(shí)候,可以方便查一下。
| 轉(zhuǎn)換符 | 類型 | 舉例 | |
|---|---|---|---|
| d | 十進(jìn)制整數(shù) | (“%d”,100) | 100 |
| x | 十六進(jìn)制整數(shù) | (“%x”,100) | 64 |
| o | 八進(jìn)制整數(shù) | (“%o”,100) | 144 |
| f | 定點(diǎn)浮點(diǎn)數(shù) | (“%f”,100f) | 100.000000 |
| e | 指數(shù)浮點(diǎn)數(shù) | (“%e”,100f) | 1.000000e+02 |
| g | 通用浮點(diǎn)數(shù) | (“%g”,100f) | 100.000 |
| a | 十六進(jìn)制浮點(diǎn)數(shù) | (“%a”,100) | 0x1.9p6 |
| s | 字符串 | (“%s”,100) | 100 |
| c | 字符 | (“%c”,‘1’) | 1 |
| b | 布爾值 | (“%b”,100) | true |
| h | 散列碼 | (“%h”,100) | 64 |
| % | 百分號(hào) | (“%.2f%%”,2/7f) | 0.29 |
- 錯(cuò)誤輸出這里補(bǔ)充一個(gè)錯(cuò)誤輸出(打?。└袷剑?/li>
System.err.println(msg);
示例代碼:
public class Test {
public static void main(String[] args) {
System.out.println("正確輸出");
System.err.println("錯(cuò)誤輸出"); //錯(cuò)誤
}
}
從運(yùn)行結(jié)果,我們可以看到,錯(cuò)誤輸出被標(biāo)記為紅色了,而且我代碼的書寫順序是先正確輸出,后錯(cuò)誤輸出,但是執(zhí)行結(jié)果是,錯(cuò)誤輸出先打印。這是因?yàn)榇嬖谝粋€(gè)優(yōu)先級(jí)的問題,JVM內(nèi)部會(huì)將錯(cuò)誤的優(yōu)先輸出
二、從鍵盤輸入
- 讀入一個(gè)字符直接使用 System.in.read 可以讀入一個(gè)字符. 但是需要搭配異常處理(關(guān)于異常處理后面會(huì)重點(diǎn)講到)
import java.io.IOException; // 需要導(dǎo)入 IOException 包
try {
System.out.print("Enter a Char:");
char i = (char) System.in.read();
System.out.println("your char is :"+i);
} catch (IOException e) {
System.out.println("exception");
}或者是:
import java.io.IOException;
public class Test {
public static void main(String[] args) throws IOException { //需要聲明異常
System.out.println("請(qǐng)輸入一個(gè)字符!");
char ch = (char) System.in.read();
System.out.println("這個(gè)字符是:" + ch);
}
}這種方式非常麻煩,還特別容易出錯(cuò),所以強(qiáng)烈不推薦使用
- 使用 Scanner 讀取字符串/整數(shù)/浮點(diǎn)數(shù)
import java.util.Scanner; // 需要導(dǎo)入 util 包
Scanner sc = new Scanner(System.in);
System.out.println("請(qǐng)輸入你的姓名:");
String name = sc.nextLine();
System.out.println("請(qǐng)輸入你的年齡:");
int age = sc.nextInt();
System.out.println("請(qǐng)輸入你的工資:");
float salary = sc.nextFloat();
System.out.println("你的信息如下:");
System.out.println("姓名: "+name+"\n"+"年齡:"+age+"\n"+"工資:"+salary);
sc.close(); // 注意, 要記得調(diào)用關(guān)閉方法
// 執(zhí)行結(jié)果
請(qǐng)輸入你的姓名:
張三
請(qǐng)輸入你的年齡:
18
請(qǐng)輸入你的工資:
1000
你的信息如下:
姓名: 張三
年齡:18
工資:1000.0- 使用Scanner循環(huán)讀取N個(gè)數(shù)字
Scanner sc = new Scanner(System.in);
double sum = 0.0;
int num = 0;
while (sc.hasNextDouble()) {
double tmp = sc.nextDouble();
sum += tmp;
num++;
}
System.out.println("sum = " + sum);
System.out.println("avg = " + sum / num);
sc.close();
// 執(zhí)行結(jié)果
10
40.0
50.5
^D
sum = 150.5
avg = 30.1當(dāng)循環(huán)輸入多個(gè)數(shù)據(jù)的時(shí)候, 使用 ctrl + z(JDK1.7之前) 來結(jié)束輸入 ?,F(xiàn)在統(tǒng)一使用ctrl+d來結(jié)束輸入
- 猜數(shù)字游戲游戲規(guī)則:系統(tǒng)自動(dòng)生成一個(gè)隨機(jī)整數(shù)(1-100), 然后由用戶輸入一個(gè)猜測(cè)的數(shù)字. 如果輸入的數(shù)字比該隨機(jī)數(shù)小, 提示 “低了”, 如果輸入的數(shù)字比該隨機(jī)數(shù)大, 提示 “高了” , 如果輸入的數(shù)字和隨機(jī)數(shù)相等, 則提示 “猜對(duì)了”。
import java.util.Random;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Random random = new Random();
int toGuess = random.nextInt(100); //隨機(jī)生成一個(gè)1~100以內(nèi)的任意整數(shù)
while (true){
System.out.println("請(qǐng)輸入要輸入的數(shù)字!");
int num = sc.nextInt();
if(num < toGuess){
System.out.println("小了");
}else if(num > toGuess){
System.out.println("大了");
}else {
System.out.println("恭喜你猜對(duì)了!");
break;
}
}
sc.close(); //最后,記得關(guān)閉輸入
}
}總結(jié)
到此這篇關(guān)于Java中輸入輸出方式的文章就介紹到這了,更多相關(guān)Java輸入輸出方式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
kafka分布式消息系統(tǒng)基本架構(gòu)及功能詳解
這篇文章主要為大家介紹了kafka分布式消息系統(tǒng)基本架構(gòu)及功能詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03
java8 統(tǒng)計(jì)字符串字母?jìng)€(gè)數(shù)的幾種方法總結(jié)(推薦)
下面小編就為大家分享一篇java8 統(tǒng)計(jì)字符串字母?jìng)€(gè)數(shù)的幾種方法總結(jié)(推薦),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來吧2017-11-11
如何使用IDEA 搭建 SpringCloud 項(xiàng)目
所謂微服務(wù),就是要把整個(gè)業(yè)務(wù)模塊拆分成多個(gè)各司其職的小模塊,做到單一職責(zé)原則,不會(huì)重復(fù)開發(fā)相同的業(yè)務(wù)代碼,實(shí)現(xiàn)真正意義上的高內(nèi)聚、低耦合,這篇文章主要介紹了如何使用IDEA 搭建 SpringCloud 項(xiàng)目,需要的朋友可以參考下2023-11-11
Sublime Text 打開Java文檔中文亂碼的解決方案
這篇文章主要介紹了Sublime Text 中文亂碼的解決方案,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下2020-12-12
IntelliJ IDEA 使用經(jīng)驗(yàn)總結(jié)(推薦)
這篇文章主要介紹了IntelliJ IDEA 使用經(jīng)驗(yàn)總結(jié),非常不錯(cuò),具有參考價(jià)值,需要的朋友可以參考下2018-02-02
基于Java?SpringBoot的前后端分離信息管理系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)
當(dāng)今社會(huì),人才的流動(dòng)速度大大增加,因此也對(duì)黨建工作的管理層面工作帶來了空前且復(fù)雜的挑戰(zhàn),從而使得如何高效的開展管理黨建工作成為了亟待解決的問題。本文將介紹通過Java?SpringBoot實(shí)現(xiàn)前后端分離信息管理系統(tǒng),感興趣的同學(xué)可以了解一下2021-11-11
redis與ssm整合方法(mybatis二級(jí)緩存)
本文給大家介紹redis與ssm整合方法(mybatis二級(jí)緩存)。主要是利用redis去做mybatis的二級(jí)緩存,mybaits映射文件中所有的select都會(huì)刷新已有緩存,如果不存在就會(huì)新建緩存,所有的insert,update操作都會(huì)更新緩存2017-12-12

