জাভাটির "% n" প্রিন্টফের সাথে কী হবে?


107

আমি কার্যকর জাভা পড়ছি এবং এটি %nসর্বত্র নিউলাইন চরিত্রের জন্য ব্যবহার করে । আমি \nজাভা প্রোগ্রামগুলিতে নতুন লাইনের জন্য বরং সফলভাবে ব্যবহার করেছি।

'সঠিক' কোনটি? এর সাথে কী হয়েছে \n? জাভা কেন এই সি কনভেনশন পরিবর্তন করেছিল?


1
কেবল অনুমান, তবে: ক্রস প্ল্যাটফর্ম সমর্থন। বিভিন্ন সিস্টেম নতুন লাইনের জন্য বিভিন্ন অক্ষর ব্যবহার করে, যেমন \ n বনাম \ r \ n। সি # এর একই উদ্দেশ্যে পরিবেশ.নিউলাইন রয়েছে।
জর্দান

জাভাতে সিস্টেমেও কিছু রয়েছে, তবে প্রিন্টফাইটিতে% n আরও সহজ।
পল টমলিন

জাভা কেন এই সি কনভেনশনটি পরিবর্তন করেছিল == +1, :)
মাইকেল ডিম্মিট

পরিবর্তন নয়, একটি সংযোজন / বর্ধন। \ n এখনও এর অর্থ \ n
বিল কে

(ভবিষ্যতের পাঠকদের জন্য নোট: সি ইতিমধ্যে ধর্মান্তরিত স্বয়ংক্রিয় \nটেক্সট বিন্যাসে প্ল্যাটফর্ম নির্দিষ্ট সম্পর্কে newline চাই, দেখতে এই , জাভা নেই)
user202729

উত্তর:


150

একটি দ্রুত গুগল থেকে:

একটি নির্দিষ্টকরণকারীও রয়েছে যা যুক্তির সাথে মিল রাখে না। এটি "% n" যা একটি লাইন বিরতি দেয়। একটি "\ n" কিছু ক্ষেত্রেও ব্যবহার করা যেতে পারে, তবে যেহেতু "% n" সর্বদা সঠিক প্ল্যাটফর্ম-নির্দিষ্ট লাইন বিভাজককে আউটপুট দেয়, এটি প্ল্যাটফর্মের মধ্যে বহনযোগ্য যেখানে "\ n" নেই।

দয়া করে https://docs.oracle.com/javase/tutorial/java/data/number فار t.html দেখুন

মূল উৎস


@ ইউজার ২644064 true৪০ এটি সত্য, এটি সঠিক প্ল্যাটফর্ম-নির্দিষ্ট লাইন বিভাজকটি করে না তবে বর্তমানটিকে আউটপুট দেয় ।
হউকে ইঙ্গমার

উম্ম, তার মানে কী?
কল্পেশ সনি

আমি বিশ্বাস করি যে এটি চলমান ওএসের জন্য এটি চালু রয়েছে তবে এটি লিনাক্স এবং উইন্ডোজের আউটপুট কোডে চলছে এবং এটি আপনার পরে নাও হতে পারে। আমি অন্যথায় নিশ্চিত নই যে অন্য দু'জন কমেন্টার কী উল্লেখ করেছে।
বিল কে

30

%nপ্ল্যাটফর্ম জুড়ে পোর্টেবল \nহয় না।

রেফারেন্স ডকুমেন্টেশনে ফর্ম্যাটিং স্ট্রিং সিনট্যাক্সটি দেখুন :

'এন' লাইন বিভাজক ফলাফল প্ল্যাটফর্ম-নির্দিষ্ট লাইন বিভাজক



24

যদিও \nইউনিক্স-ভিত্তিক সিস্টেমগুলির জন্য সঠিক নিউলাইন চরিত্রটি রয়েছে, অন্য সিস্টেমগুলি একটি লাইনের শেষ উপস্থাপন করতে বিভিন্ন অক্ষর ব্যবহার করতে পারে। বিশেষত, উইন্ডোজ সিস্টেম ব্যবহার \r\nএবং প্রারম্ভিক ম্যাকওএস সিস্টেম ব্যবহৃত হয় \r

%nআপনার ফর্ম্যাট স্ট্রিং ব্যবহার করে , আপনি জাভাটিকে ফিরে আসা মানটি ব্যবহার করতে বলুন System.getProperty("line.separator")যা বর্তমান সিস্টেমের জন্য লাইন বিভাজক।


18

সতর্কতা:

আপনি যদি নেটওয়ার্কিং কোডটি করছেন, তবে আপনি কোন প্ল্যাটফর্মটি চালাচ্ছেন তার উপর নির্ভর করে নেটওয়ার্কের বিভিন্ন অক্ষর প্রেরণ করতে পারে তার \nবিপরীতে আপনি অবশ্যই তার নির্দিষ্টতা পছন্দ করতে পারেন %n


8

"সঠিক" আপনি যা করতে চেষ্টা করছেন ঠিক তার উপর নির্ভর করে।

। n সর্বদা আপনাকে একটি "ইউনিক্স স্টাইল" লাইন শেষ করে দেবে। । r \ n সর্বদা আপনাকে একটি "ডস স্টাইল" লাইন শেষ করে দেবে। আপনি যে প্ল্যাটফর্মটি চালাচ্ছেন তার জন্য% n আপনাকে শেষ রেখা দেবে

সি এটি অন্যভাবে পরিচালনা করে। আপনি "টেক্সট" বা "বাইনারি" মোডে কোনও ফাইল খুলতে বেছে নিতে পারেন। আপনি যদি বাইনারি মোডে ফাইলটি খোলেন \ n আপনাকে একটি "ইউনিক্স স্টাইল" লাইন শেষ করবে এবং "\ r \ n" আপনাকে একটি "ডস স্টাইল" লাইন শেষ করবে। আপনি যদি কোনও ডস / উইন্ডোজ সিস্টেমে "পাঠ্য" মোডে ফাইলটি খুলেন তবে আপনি যখন \ n লিখবেন তখন ফাইল হ্যান্ডলিং কোড এটিকে \ r \ n এ রূপান্তর করে। সুতরাং পাঠ্য মোডে একটি ফাইল খোলার মাধ্যমে এবং \ n ব্যবহার করে আপনি প্ল্যাটফর্মের নির্দিষ্ট লাইনটি সমাপ্ত হবে।

আমি দেখতে পাচ্ছি যে জাভা ডিজাইনাররা কেন "পাঠ্য" এবং "বাইনারি" ফাইল মোড সম্পর্কিত সিটির হ্যাকি ধারণাগুলি প্রতিলিপি করতে চান নি।


4

জাভাতে \nসর্বদা \u000Aলাইনফিড অক্ষর তৈরি করুন । নির্দিষ্ট প্ল্যাটফর্ম ব্যবহারের জন্য সঠিক লাইন বিভাজক পেতে %n

সুতরাং \nআপনার যখন নিশ্চিত হয়ে যায় যে আপনার \u000Aলাইফফিড অক্ষর প্রয়োজন , উদাহরণস্বরূপ নেটওয়ার্কিংয়ে।
অন্য সমস্ত পরিস্থিতিতে ব্যবহার%n


4

লক্ষ্য করুন এই উত্তরগুলোর একমাত্র সত্য যখন ব্যবহার System.out.printf()বা System.out.format()বা Formatterঅবজেক্ট। আপনি যদি এটি ব্যবহার %nকরেন তবে System.out.println()এটি %nএকটি নতুন লাইন নয় কেবল একটি উত্পাদন করবে ।


0

% n ফর্ম্যাট স্পেসিফায়ার হ'ল একটি লাইন বিভাজক যা অপারেটিং সিস্টেমগুলিতে পোর্টেবল। তবে এটি System.out.print বা System.out.println ফাংশনগুলির আর্গুমেন্ট হিসাবে ব্যবহার করা যায় না।

Always n উপরে লাইন বিভাজকের এই নতুন সংস্করণটি ব্যবহার করার জন্য সর্বদা সুপারিশ করা হয়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.