Всем привет! У меня в ходе решения задачи какой-то баг с Intellij Idea. Дело в том, что она почему-то не воспринимает аргументы, с которыми запускается программа, если они написаны на русском языке. Я ввожу к примеру аргумент "Рубашка", пытаюсь его (в данном случае это args[1]) вывести с помощью отладочного принта, мне выдает следующее какую-то фигню на английском: сейчас печатает "out.log", раньше печатало ".idea". С чем связан данный баг? У меня англоязычная Windows 10, если это имеет значение.
package com.javarush.task.task18.task1827;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
/*
Прайсы
*/
public class Solution {
public static void main(String[] args) throws Exception {
//System.out.println(args[1]);
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String filename = reader.readLine();
//InputStream inStream = new FileInputStream(filename);
BufferedReader freader = new BufferedReader(new FileReader(new File(filename)));
String firstStr = freader.readLine();
int maxId = toInt(firstStr.substring(0,8));
while (freader.readLine() != null) {
String line = freader.readLine();
int id = toInt(line.substring(0,8));
if (id > maxId)
maxId = id;
}
freader.close();
switch(args[0]) {
case "-c":
String productName = dob(args[1], 30);
String price = dob(args[2], 8);
String quantity = dob(args[3], 4);
String result ="\n" +Integer.toString(maxId+1) +productName+price+quantity;
//System.out.println(result);
OutputStream os = new FileOutputStream(filename, true);
os.write(result.getBytes());
os.close();
}
}
public static String dob(String s, int length)
{
if (s.length() < length)
{
int dif = length - s.length();
for (int i=0; i<dif; i++)
s = s+ " ";
}
return s;
}
public static int toInt(String id)
{
int firstSpace = id.length();
for (int i=0; i < id.length(); i++)
{
if (id.charAt(i) == ' ')
{
firstSpace = i;
break;
}
}
return Integer.parseInt(id.substring(0, firstSpace));
}
}